spark streaming抛出套接字数据流没有更多数据,无法在初始化时连接到所需端口

vcirk6k6  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(233)

我也经历过很多类似的情况,大多数被认可的答案是,端口必须打开才能启动连接,因此spark无法连接。我已经确保端口监听文件在我的spark流文件之前运行。有人能帮忙吗!!!
端口打开文件

import tweepy
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener
import socket
import json

consumer_key=''
consumer_secret=''
access_token=''
access_secret=''

class TweetsListener(StreamListener):
    def __init__(self, csocket):
        self.client_socket = csocket

def on_data(self,data):
    try:
        msg=json.loads(data)
        print(msg['text'].encode('utf-8'))
        self.client_socket.send(msg['text'].encode('utf-8'))
        return True
    except BaseException as e:
        print("Error on_data: %s" % str(e))
    return True

def on_error(self,status):
    print(status)
    return True

def sendData(self,c_socket):
    auth=OAuthHandler(consumer_key,consumer_secret)
    auth.set_access_token(access_token,access_secret)
    twitter_stream = Stream(auth, TweetsListener(c_socket))
    twitter_stream.filter(language=['en'])

    s = socket.socket()
    host = "127.0.0.1"
    port = 7777
    s.bind((host, port))
    print("Listening on port: %s" % str(port))

    s.listen(5)
    c, addr=s.accept()
    print("Received request from: " +str(addr))

    def sending():
        TweetsListener.sendData(c)

spark流文件

from __future__ import print_function
from pyspark import SparkContext
from pyspark.streaming import StreamingContext

sc=SparkContext(appName="StreamingTwitterAnalysis")
sc.setLogLevel("ERROR")
ssc=StreamingContext(sc,10)

socket_stream = ssc.socketTextStream("127.0.0.1", 7777)

lines = socket_stream.window( 60 )

hashtags = lines.flatMap(lambda text: text.split ( " " ))

sorted_dstream=hashtags.transform(lambda foo:foo.sortBy(lambda x:x[0].lower())
sorted_dstream.pprint()

ssc.start()
ssc.awaitTermination()

现在,我得到的错误是奇怪的
据我所知,密钥是正确的,第一个错误很奇怪,因为它说twitterapi中没有数据。第二个似乎是一个简单的端口未打开错误,但相信我,当我运行第一个文件时,它说监听端口号7777。
有人能帮忙吗???
我把这两个文件按顺序依次放在pycharm里。后来我在pycharm中运行了第一个文件,在windows中通过命令提示符运行了第二个文件。。。。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题