簡體   English   中英

將 avro 文件推送到 Kafka

[英]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.

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