首先看官方文档:
从控制台读出数据并将其写回是十分方便操作的,但你可能需要使用其他来源的数据或将数据从Kafka导出到其他系统。针对这些系统, 你可以使用Kafka Connect来导入或导出数据,而不是写自定义的集成代码。
Kafka Connect是Kafka的一个工具,它可以将数据导入和导出到Kafka。它是一种可扩展工具,通过运行connectors(连接器), 使用自定义逻辑来实现与外部系统的交互。 在本文中,我们将看到如何使用简单的connectors来运行Kafka Connect,这些connectors 将文件中的数据导入到Kafka topic中,并从中导出数据到一个文件。
首先,我们将创建一些种子数据来进行测试:
1
>
echo
-e
"foo\nbar"
>
test
.txt
在Windows系统使用:
1
2
>
echo
foo>
test
.txt
>
echo
bar>>
test
.txt
接下来,我们将启动两个standalone(独立)运行的连接器,这意味着它们各自运行在一个单独的本地专用 进程上。 我们提供三个配置文件。首先是Kafka Connect的配置文件,包含常用的配置,如Kafka brokers连接方式和数据的序列化格式。 其余的配置文件均指定一个要创建的连接器。这些文件包括连接器的唯一名称,类的实例,以及其他连接器所需的配置。
1
> bin
/connect-standalone
.sh config
/connect-standalone
.properties config
/connect-file-source
.properties config
/connect-file-sink
.properties
这些包含在Kafka中的示例配置文件使用您之前启动的默认本地群集配置,并创建两个连接器: 第一个是源连接器,用于从输入文件读取行,并将其输入到 Kafka topic。 第二个是接收器连接器,它从Kafka topic中读取消息,并在输出文件中生成一行。
在启动过程中,你会看到一些日志消息,包括一些连接器正在实例化的指示。 一旦Kafka Connect进程启动,源连接器就开始从 test.txt
读取行并且 将它们生产到主题 connect-test
中,同时接收器连接器也开始从主题 connect-test
中读取消息, 并将它们写入文件 test.sink.txt
中。我们可以通过检查输出文件的内容来验证数据是否已通过整个pipeline进行交付:
1
2
3
>
more
test
.sink.txt
foo
bar
请注意,数据存储在Kafka topic connect-test
中,因此我们也可以运行一个console consumer(控制台消费者)来查看 topic 中的数据(或使用custom consumer(自定义消费者)代码进行处理):
1
2
3
4
> bin
/kafka-console-consumer
.sh --bootstrap-server localhost:9092 --topic connect-
test
--from-beginning
{
"schema"
:{
"type"
:
"string"
,
"optional"
:
false
},
"payload"
:
"foo"
}
{
"schema"
:{
"type"
:
"string"
,
"optional"
:
false
},
"payload"
:
"bar"
}
...
连接器一直在处理数据,所以我们可以将数据添加到文件中,并看到它在pipeline 中移动:
1
>
echo
Another line>>
test
.txt
您应该可以看到这一行出现在控制台用户输出和接收器文件中。
在使用导入数据的时候,注意一下几点:
导入的text在运行目录下,这个是可配置的。
这个图是导入导出的数据,配置文件如下图:
text.txt是文件路径,可自行配置。
运行后的图: