对不起,如果这是一个愚蠢的问题。我是所有这些管道的新手:)
我使用kafka-python客户端创建一个发送csv的生产者(一个csv行=一个kafka消息)。请注意,我通过JSON将其序列化为字符串,并将其编码为UTF-8字节。然后我创建了一个解码消息的消费者(一个csv行现在是一个字符串)并将它们打印到终端。 现在我需要使用hive将这些数据保存在hdfs中。我想将每条消息插入一个hive表,然后我想做一个巨大的选择来获取一个文件中的所有数据。
使用python执行此操作的最佳方法是什么?
这就是我所做的:
首先,我启动zookeeper服务器:
bin/zookeeper-server-start.sh config/zookeeper.properties
然后我启动kafka服务器:
bin/kafka-server-start.sh config/server.properties
然后我开始我的消费者和制作人:
我的制作人:
from kafka import KafkaClient, KafkaProducer, KafkaConsumer
import csv
import json
client = KafkaClient("localhost:9092")
producer = KafkaProducer(bootstrap_servers='localhost:9092')
with open("train.csv") as file:
reader = csv.reader(file)
for row in reader:
producer.send('the_topic', json.dumps(row).encode('utf-8'))
我的消费者:
from kafka import KafkaConsumer
import json
consumer = KafkaConsumer('the_topic')
for msg in consumer:
decoded_msg = msg.value.decode("utf-8")
print(decoded_msg)