Kafka-导入导出数据
从控制台写入数据并将其写回控制台是一个方便的起点,但您可能希望使用其他来源的数据或将数据从Kafka导出到其他系统。对于许多系统,您可以使用Kafka Connect导入或导出数据,而不是编写自定义集成代码。 Kafka Connect是Kafka附带的工具,可以向Kafka导入和导出数据。它是一个可扩展的工具,可以运行 连接器,实现与外部系统交互的自定义逻辑。在本快速入门中,我们将了解如何使用简单的连接器运行Kafka Connect,这些连接器将数据从文件导入Kafka主题并将数据从Kafka主题导出到文件。
首先,我们将首先创建一些种子数据进行测试:
echo -e "foo\nbar" > test.txt
修改config/connect-standalone.properties配置:
bootstrap.servers=192.168.1.5:9092
修改config/connect-file-source.properties配置:
file=/opt/app/kafka_2.12-2.3.0/config/test.txt
修改config/connect-file-sink.properties配置:
file=/opt/app/kafka_2.12-2.3.0/config/test.sink.txt
接下来,我们将启动以独立模式运行的两个
连接器,这意味着它们在单个本地专用进程中运行。我们提供三个配置文件作为参数。第一个始终是Kafka Connect流程的配置,包含常见配置,例如要连接的Kafka代理和数据的序列化格式。其余配置文件均指定要创建的连接器。这些文件包括唯一的连接器名称,要实例化的连接器类以及连接器所需的任何其他配置。
bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties
在启动过程中,您将看到许多日志消息,包括一些指示正在实例化连接器的日志消息。一旦Kafka Connect进程启动,源连接器应该开始从test.txt主题读取行并将其生成到主题connect-test,并且接收器连接器应该开始从主题读取消息connect-test 并将它们写入文件test.sink.txt。我们可以通过检查输出文件的内容来验证数据是否已通过整个管道传递:
more test.sink.txt
foo
bar
请注意,数据存储在Kafka主题中connect-test,因此我们还可以运行控制台使用者来查看主题中的数据(或使用自定义使用者代码来处理它):
bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.5:9092 --topic connect-test --from-beginning
{"schema":{"type":"string","optional":false},"payload":"foo"}
{"schema":{"type":"string","optional":false},"payload":"bar"}
连接器继续处理数据,因此我们可以将数据添加到文件中,并看到它在管道中移动:
echo Another line>> test.txt
bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.5:9092 --topic connect-test --from-beginning
{"schema":{"type":"string","optional":false},"payload":"foo"}
{"schema":{"type":"string","optional":false},"payload":"bar"}
{"schema":{"type":"string","optional":false},"payload":"Another line"}