kafka connect连接器从文件(文件数据源)中读取数据输出到kafka,并从topic中读取数据输出到文件(文件数据池)

本例中使用到的文件连接器和JSON转换器都是kafka自带的。

1.进入到kafka安装目录下启动zookeeper及kafka:

kafka安装及启动链接:centos7下kafka2.12-2.1.0的安装及使用_QYHuiiQ的博客-CSDN博客_kafka2.12安装

2.启动一个分布式的worker进程。为了实现高可用性,真实的生产环境一般需要至少2~3个worker集群。在此,我们只启动一个。

connect启动有两种方式,一种是分布式,一种是standalone模式。这次我们使用分布式模式启动:

进入kafka安装目录,输入如下命令:

如果启动过程中中 出现Broker may not be available这个问题,修改config/connect-distributed.properties文件中的bootstrap.server将localhost改为服务器ip.参考:使用java代码连接不上kafka的解决方案(生产者与消费者都没能连上)_QYHuiiQ的博客-CSDN博客

3.创建一个topic:kafka-connect-topic

4.创建一个文件,往里面写一写数据(\n表示换行):

(该命令表示创建一个read.txt的文件,并向中添加内容"wyh"换行"Wednesday")

vi进去看一下刚才写的数据:

5.启动一个文件数据源:

截图右边未显示完整的部分:"topic":"kafka-connect-topic"换行。

echo表示回显内容,回车之后会把刚才输入的内容回显。

name:连接器唯一名称,不能重复。

connector.class:连接器的java类。用来连接kafka集群的类名,也就是你继承SourceConnector或SinkConnector的实现类,也就是Connector程序的入口,尽量使用类的全路径名。

file:要读取的文件,相对于当前所在目录。这里我们刚才创建的文件是在kafka的安装包路径下的,如果是在config目录下,那么file的值就是"config/read.txt"。

topic:将文件的内容写到哪个topic。

6.消费一下刚才的topic来验证文件中的信息是否被读取到topic上了:

输出的结果:

可以看到在read.txt中我们输入的文本内容每一行都被转成JSON格式,并被连接器发送到我们刚才指定的topic中。默认情况下,JSON转换器会在每个记录里附带上schema。这里的schema非常简单,只有一个payload列,它是字符串类型,payload列就是文件中每一行的内容。

以上就是通过连接器将文件中的内容读取到kafka的过程。

下面我们在实验一下把kafka中的数据导出到一个指定的文件中,在此过程中,JSON转换器会把每个JSON记录转成单行文本。

7.启动文件数据池:

右边截掉的部分:"topics":"kafka-connect-topic",特别注意:这个地方是topics,表示可以从多个topic中读取数据写入到一个文件中。

file指定了要写入的文件名,自动生成该文件,该文件路径是相对于当前所在目录(kafka的安装包下)

8.我们去看一下自动生成的指定文件:

9.自动生成了我们刚才指定的文件,然后我们看一下里面的内容:

正是我们刚才在read.txt中写的数据。

10.下面我们再测试一下连接器能否实时同步数据,我们向read.txt中追加一些内容:

执行命令:echo  "mytest"    >>   read.txt(该命令表示向文件的最后追加内容)

11.消费topic查看数据:

可以看到topic中有了我们建立连接器之后发送的消息。

12.再查看topic输出的文件read-copy.txt中的内容:

输入命令:cat   read-copy.txt(查看文件内容)

需要注意的是:

1) 从文件读取到kafka时的连接器配置中连接器类名是FileStreamSourse,而从kafka读到文件中的连接器类名是FileStreamSink.

2)从文件读的时候的file指的是要读取的文件,从kafka中读到文件时的file指的是要写入的文件。

3)从文件读的时候指定的是topic,从kafka导出数据的时候指定的是topics。因为我们可以使用数据池将多个主题写入一个文件,而一个数据源只允许被写入一个主题。

附:

删除连接器的命令:curl    -X  DELETE   http://localhost:8083/connectors/连接器名称

综上,我们成功测试了使用连接器从文件中实时读取数据到kafka以及从kafka实时读取数据到指定文件。

参考文献:《kafka权威指南》

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值