簡體   English   中英

將 csv 文件寫入 kafka 主題

[英]Write a csv file to a kafka topic

我有一個大的 csv,我想寫一個 kafka 主題。

def producer():
    producer = KafkaProducer(bootstrap_servers='mykafka-broker')
    with open('/home/antonis/repos/testfile.csv') as file:
        reader = csv.DictReader(file, delimiter=";")
        for row in reader:
            producer.send(topic='stable_topic', value=row)
            producer.flush()

if __name__ == '__main__':
    producer()

此代碼產生錯誤:

AssertionError: value must be bytes

該文件如下所示:

"timestamp","name","age"
2020-03-01 00:00:01,John,36
2020-03-01 00:00:01,Peter,22

誰能幫我這個?

與其重新發明輪子,不如使用已經存在的非常好的輪子:) 它是Kafka Connect ,它是 Apache Kafka 的一部分。

有幾個連接器可以從 CSV 讀取,包括Kafka Connect spooldir (參見示例)和Filepulse

本次演講中了解有關 Kafka Connect 的更多信息。

您需要正確序列化您的值。


以下應該可以解決問題:

import json  

producer = KafkaProducer(
    bootstrap_servers='mykafka-broker',
    value_serializer=lambda v: json.dumps(v).encode('utf-8')
)

暫無
暫無

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

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