直接从我的本地计算机向Kafka生产者加载1GB的文件

时间:2016-09-01 04:34:32

标签: apache-kafka

我已经尝试了通过命令行从生产者向消费者发布随机消息的基本示例。 现在我想发布本地机器中存在的所有1GB数据。为此,我正在努力将1GB数据加载到制作人。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

您只需通过简单的重定向转储到kafka主题即可转储文件。假设1.xml是1GB文件,那么您可以使用以下命令。

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test123 < ./1.xml 
  1. 但请确保在生产者xml中设置以下属性。 socket.request.max.bytessocket.receive.buffer.bytessocket.send.buffer.bytes
  2. 如果您的邮件大小很大,则需要为test123主题设置max.message.bytes
  3. 同时更改console-producer.sh中的Xmx参数以避免内存不足问题。
  4. 这些是在kafka中加载数据的一般步骤。 如果您提供错误,我们将能够了解更多。

    因此,有两种方法可以提供帮助: 1)您可以使用像Flume这样的大数据平台,这些平台是为这种用例而构建的。 2)如果你想实现自己的代码,那么你可以使用Apache commons Lib,它可以帮助你在新文件到达文件夹(Capture events happening inside a directory)时捕获事件,一旦你有了,那么你可以调用代码发布关于kafka的数据。 3)在我们的项目中,我们使用Logstash API执行相同的操作,从文件夹中取出并将数据从文件发布到kafka,然后通过Storm处理它。