【发布时间】:2018-03-12 03:39:40
【问题描述】:
我刚刚开始使用Pyspark 库测试Kafka Stream 到Spark。
我一直在 Jupyter Notebook 上运行整个设置。
我正在尝试从Twitter Streaming 获取数据。
Twitter 流代码:
import json
import tweepy
from uuid import uuid4
import time
from kafka import KafkaConsumer
from kafka import KafkaProducer
auth = tweepy.OAuthHandler("key", "key")
auth.set_access_token("token", "token")
api = tweepy.API(auth, wait_on_rate_limit=True, retry_count=3, retry_delay=5,
retry_errors=set([401, 404, 500, 503]))
class CustomStreamListener(tweepy.StreamListener):
def __init__(self, api):
self.api = api
super(tweepy.StreamListener, self).__init__()
def on_data(self, tweet):
print tweet
# Kafka Producer to send data to twitter topic
producer.send('twitter', json.dumps(tweet))
def on_error(self, status_code):
print status_code
return True # Don't kill the stream
def on_timeout(self):
print 'on_timeout'
return True # Don't kill the stream
producer = KafkaProducer(bootstrap_servers='localhost:9092')
sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
sapi.filter(track=["#party"])
Spark 流式处理代码
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
sc = SparkContext(appName="PythonSparkStreamingKafka_RM_01").getOrCreate()
sc.setLogLevel("WARN")
streaming_context = StreamingContext(sc, 10)
kafkaStream = KafkaUtils.createStream(streaming_context, 'localhost:2181', 'spark-streaming', {'twitter': 1})
parsed = kafkaStream.map(lambda v: v)
parsed.count().map(lambda x:'Tweets in this batch: %s' % x).pprint()
streaming_context.start()
streaming_context.awaitTermination()
打印输出:
时间:2017-09-30 11:21:00
时间:2017-09-30 11:21:10
时间:2017-09-30 11:21:20
我做错了什么特定的部分?
【问题讨论】:
-
你能解决这个错误吗?我面临同样的问题。你能帮帮我吗?
标签: apache-spark pyspark apache-kafka spark-streaming twitter-streaming-api