簡體   English   中英

使用Python中的kafka生成器發送數據的問題(Jupyter Notebook)

[英]Problem sending data with kafka producer in Python (Jupyter Notebook)

我正在嘗試使用Kafka,Python和Twitter創建大數據分析。 我有一個推文數據流,我只采用它們的標簽。 我的問題與制作人Kafka在Python中使用有關。 我無法將我想要的數據發送到我創建的主題中,因為我沒有看到任何選項來向生產者發送變量的內容。

https://kafka-python.readthedocs.io/en/master/usage.html中,我只能看到使用b'some_string'發送精確字符串的選項。 但我想發送我從Twitter Stream中獲取的標簽。 我不太了解Python,所以如果解決方案很明顯,請原諒。

進口:

from pyspark import SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
import json
import tweepy
from tweepy import OAuthHandler
from tweepy import Stream
import kafka
from kafka import SimpleProducer, KafkaClient
from kafka import KafkaProducer

流式上下文:

ssc = StreamingContext(sc,60)

鍵:

consumer_key="consumer_key"
consumer_secret="consumer_secret"
access_token="access_token"
access_token_secret="access_token_secret"

Tweepy:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

制片人:

producer = KafkaProducer(bootstrap_servers=['localhost:9092'])

碼:

class MyStreamListener(tweepy.StreamListener):

    def on_status(self, status):
        for hashtag in status.entities['hashtags']:
            prueba = b'hashtag["text"]'
            producer.send('topic', prueba)
            return True
    def on_error(self, status_code):
        if status_code == 420:
            #returning False in on_data disconnects the stream
            return False

StreamListener:

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=MyStreamListener())

推文流:

myStream.filter(track=['some_text'])

問題是,生產者只發送"(hashtag["text"])"的文字字符串prueba 我想發送的不是確切的東西,而是它的內容。

提前致謝。

producer.send('topic', hashtag)怎么樣? 您還需要確保將數據編碼為原始字節,這是kafka存儲的內容。 如果hashtag是一個簡單的字符串,你可以做producer.send('topic', hashtag.encode('utf-8')) 如果它是dict或更復雜的數據結構,則可能需要在編碼為字節之前使用json.dumps。 希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM