Apache kafka 卡夫卡生产者读取数据文件
我试图在循环中加载一个数据文件(检查统计数据),而不是卡夫卡中的标准输入。下载卡夫卡后,我执行了以下步骤: 已启动zookeeper:Apache kafka 卡夫卡生产者读取数据文件,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,我试图在循环中加载一个数据文件(检查统计数据),而不是卡夫卡中的标准输入。下载卡夫卡后,我执行了以下步骤: 已启动zookeeper: bin/zookeeper-server-start.sh config/zookeeper.properties 已启动的服务器: bin/kafka-server-start.sh config/server.properties 创建了一个名为“测试”的主题: 制片人说: bin/kafka-console-producer.sh --broker-l
bin/zookeeper-server-start.sh config/zookeeper.properties
已启动的服务器:
bin/kafka-server-start.sh config/server.properties
创建了一个名为“测试”的主题:
制片人说:
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
我想将一个数据文件传递给生产者,消费者可以直接看到,而不是标准输入。或者是否有卡夫卡制作者而不是控制台使用者,我可以使用它们读取数据文件。任何帮助都将不胜感激。谢谢 您可以通过cat读取数据文件并将其传输到kafka-console-producer.sh
cat ${datafile} | ${kafka_home}/bin/kafka-console-producer.sh --broker-list ${brokerlist} --topic test
您也可以尝试该实用程序。
Github上的自述文件提供了一些示例
如果您能分享哪种工具最适合您,那就太好了:)
KafkaCat自述的详细信息:
从stdin读取消息,通过快速压缩生成“syslog”主题
$ tail -f /var/log/syslog | kafkacat -b mybroker -t syslog -z snappy
若始终只有一个文件,那个么只需使用tail命令,然后通过管道将其传输到kafka控制台生成器 但如果在满足某些条件时将创建新文件,则可能需要使用apache.commons.io.monitor来监视创建的新文件,然后重复上述操作。
kafka-console-product.sh\
kafka-console-produce.sh \
--broker-list localhost:9092 \
--topic my_topic \
--new-producer < my_file.txt
--代理列表本地主机:9092\
--主题我的主题\
--新生产者
遵循此链接:卡夫卡内置了此功能,用于将文件内容传送到制作者(文件源),或将文件内容定向到另一个目标(文件接收器)
我们有bin/connect standalone.sh
从文件中读取,该文件可以在config/connect file source.properties
和config/connect standalone.properties
中配置
因此,命令将是:
bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties
如果您使用Linux或Mac,最简单的方法是:
kafka-console-producer --broker-list localhost:9092 --topic test < messages.txt
kafka控制台生产者——代理列表localhost:9092——主题测试
参考:
下面的命令当然是最简单的方法
kafka-console-producer --broker-list localhost:9092 --topic test < message.txt
kafka控制台生产者——代理列表localhost:9092——主题测试
但有时它无法找到文件。
例如:
C:\kafka_2.11-2.4.0\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --topic jason-input < C:\data\message.txt
C:\kafka_2.11-2.4.0\bin\windows>kafka-console-producer.bat--代理列表localhost:9092--主题jason输入
您给出了实际路径,但它无法在当前位置找到C,因此它将给出错误:file not found。我们会认为,我们已经给出了实际的路径,所以它将进入根,它将从那里开始路径,但它正在当前位置找到C(根)
解决方案是将..\放入移动到父文件夹的路径中。
例如
您执行的命令如下所示
C:\kafka_2.11-2.4.0\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --topic jason-input < ..\..\..\data\message.txt
C:\kafka_2.11-2.4.0\bin\windows>kafka-console-producer.bat——代理列表localhost:9092——主题jason输入<..\..\data\message.txt
现在我已进入windows文件夹…\将当前目录移动到bin文件夹,然后再次..\将当前目录移动到kafka。。。。文件夹,然后再次..\将移动到C:。现在我的道路开始了。数据,然后是message.txt或者,如果您想读取整个文件,然后继续跟踪后续追加的行,您可以使用
tail-f-n+1 file_path
,而不是cat
。卡夫卡有内置的文件源连接器,它是为这样的任务而设计的:将单个文件读入生产者,以便消费者获取数据。请看下面我的答案。您能给出config/connect file source.properties
和config/connect standalone.properties
的内容示例吗?这里有一个更详细的解释,我尝试了这个答案,但给出了错误:没有找到文件,然后我尝试给出实际路径,如C:\data\messages.txt,但同样的错误在那里。然后我尝试..\在路径中,这意味着父文件夹,但在那里我感到困惑,所以我使用tab there查看那里的文件。哎呀!成功了。它无法找到该文件,因为它正在同一位置搜索。i、 e.我给出了它试图将c搜索到当前位置的路径c:\data\message.txt。所以我需要用父文件夹commant移动它,它是\
C:\kafka_2.11-2.4.0\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --topic jason-input < ..\..\..\data\message.txt