2016-02-13 60 views
0

我想加載數據文件在循環(檢查統計),而不是在卡夫卡的標準輸入。下載卡夫卡之後,我執行以下步驟:卡夫卡生產者讀取數據文件

開始飼養員:

bin/zookeeper-server-start.sh config/zookeeper.properties 

啓動的服務器:

bin/kafka-server-start.sh config/server.properties 

創建一個話題名爲 「test」:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test 

然生產者:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
Test1 
Test2 

聽了由消費者:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning 
Test1 
Test2 

而不是標準的投入,我想將數據文件傳遞,它們可以直接被消費者看到的生產者。或者是否有任何kafka製作者而不是控制檯消費者使用我可以讀取數據文件。任何幫助真的會被讚賞。謝謝!

回答

1

您可以通過cat讀取數據文件並將其傳輸到kafka-console-producer.sh。

cat ${datafile} | ${kafka_home}/bin/kafka-console-producer.sh --broker-list ${brokerlist} --topic test 
+1

或者,如果你想閱讀整個文件,然後繼續拖尾隨後追加行,你會使用'尾-f -n +1 file_path',而不是「貓」。 –

+0

Kafka具有內置的文件源連接器,用於這種類型的任務:將單個文件讀入生產者以供消費者吸取數據。請參閱下面的答案。 – FaithReaper

0

您也可以嘗試kafkacat實用程序。 在Github上的自述文件提供的例子

這將是巨大的,如果你能分享其工具的工作最適合你的:)從KafkaCat自述

詳情:

從標準輸入讀取郵件,產生於「系統日誌「隨着清脆的壓縮話題

$ tail -f /var/log/syslog | kafkacat -b mybroker -t syslog -z snappy 
1

如果總是有一個單一的文件,你可以使用tail命令,然後將其管道卡夫卡控制檯製造商。

但是,如果在滿足某些條件時將創建新文件,則可能需要使用apache.commons.io.monitor來監視創建的新文件,然後重複上述操作。

+0

logstash或filebeat可能會更好 –

0

卡夫卡具有此內置File Stream Connector,對於一個文件的內容輸送至生產商(文件源),或指示文件內容到另一個目的地(文件接收器)。

我們有bin/connect-standalone.sh從可以在config/connect-file-source.propertiesconfig/connect-standalone.properties中配置的文件讀取。

於是命令將是:

bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties 
相關問題