[英]Pushing avro file to Kafka
我有一個現有的 avro 文件,我想將文件數據推送到 kafka 但它不起作用
/usr/bin/kafka-console-producer --broker-list test:9092 --topic test < part-m-00000.avro
謝謝
您需要先下載 avro-tools JAR 文件
然后從文件中獲取模式
java -jar avro-tools.jar getschema part-m-00000.avro > schema.avsc
然后安裝jq
因為它會以一種分鍾的格式幫助架構文件
接下來,理想情況下,Kafka 中的 Avro 消息不應包含每條記錄的模式,因此如果您安裝了 Confluent(或 Hortonworks 的 Avro Schema Registry,但我還沒有安裝),它將提高您的整體主題吞吐量和網絡使用率嘗試一下)。
在它運行之后,並且您下載了 Confluent Platform 的其余部分,有一個用於生成 Avro 數據的腳本,但是要使用它,您需要來自 Avro 文件的 JSON 記錄。 再次使用 avro-tools 獲取
java -jar avro-tools.jar tojson part-m-00000.avro > records.json
注意- 此輸出文件將明顯大於 Avro 文件
現在,您可以使用將被發送到注冊中心的模式和二進制 avro 數據生成到主題中,這是從將模式應用於 JSON 記錄轉換而來的
bin/kafka-avro-console-producer \
--broker-list localhost:9092 --topic test \
--property schema.registry.url=http://localhost:8081 \
--property value.schema="'$(jq -r tostring schema.avsc)'" < records.json
注意:在此命令之前運行jq -r tostring schema.avsc
,確保它不是轉義的 JSON 字符串
如果輸出 JSON 文件太大,您也可以將 avro-tools 輸出流式傳輸到生產者
代替
< records.json
和
< $(java -jar avro-tools.jar tojson part-m-00000.avro)
替代解決方案包括讀取 Spark 中的 Avro 文件,然后將這些記錄轉發到 Kafka
如果你想發布 Avro Messages,你可以試試 kafka-avro-console-producer。
$ ./bin/kafka-avro-console-producer \
--broker-list localhost:9092 --topic test \
--property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}' < avrofile.avro
它是 confluent 開源包的一部分,請參閱此處的更多詳細信息。 https://docs.confluent.io/3.0.0/quickstart.html
PS 找不到最新版本的命令
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.