使用kafka connect將MySQL數據導入kafka

1、kafka1.0版本以上(bin目錄包含connect,conf目錄包含connect)

在這裏插入圖片描述
在這裏插入圖片描述

2、下載kafka-connect-jdbc插件https://www.confluent.io/hub/

解壓得到以下目錄結構:
在這裏插入圖片描述

3、將插件中lib裏面的jar文件提取出來,放到kafka的libs目錄

4、複製Java的MySQL驅動包到kafka的libs目錄

5、將kafka-connect-jdbc中etc目錄下文件複製到kafka的config目錄下,並修改爲connect-mysql-source.properties

根據自己實際情況修改:

name=test-source-sqlite-jdbc-autoincrement
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=10
connection.url=jdbc:mysql://192.168.1.185:3306/us_app?user=root&password=xxx@2020
table.whitelist=t_zh_pwbzqx_sbfcms,t_yj_dwyj_qxjl,pdwqy_pms_yx_sbxx

#bulk爲批量導入,此外還有incrementing和imestamp模式
mode=bulk
#timestamp.column.name=time
#incrementing.column.name=id

topic.prefix=mysql-

關於配置的說明:https://www.jianshu.com/p/9b1dd28e92f0

6、修改kafka目錄下config/connect-standalone.properties

bootstrap.servers=cdh01:9092
#相同id的connect worker屬於一個Connect集羣
group.id=connect-cluster
#定義數據在Kafka中存儲形式
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter

7、啓動kafka connect

bin/connect-standalone.sh config/connect-standalone.properties config/connect-mysql-source.properties

注意:connect-standalone.sh爲單節點模式,此外還有connect-distributed集羣模式,使用集羣模式則需修改connect-distributed.properties

8、消費kafka,查看是否導入成功

\

PS:遇到類似報錯,並不影響使用:

ERROR Plugin class loader for connector: 'io.confluent.connect.jdbc.JdbcSourceConnector' was not found. Returning: org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader@5d1659ea (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:165)

補充(解決上述報錯問題):

修改該文檔第三步操作,將插件中lib目錄下的jar包複製到一個單獨的目錄,例如我在kafka的lib目錄下創建了一個新的文件夾叫connect,然後將插件中lib目錄下的jar包都放到該目錄下;
然後修改kafka/conf/connect-standalone.properties配置文件,在下方添加

plugin.path=/opt/bigdata/kafka_2.11-2.4.0/libs/connect

9、參考:

https://www.cnblogs.com/darange/p/9857698.html
http://www.ruijihg.com/archives/599
https://www.jianshu.com/p/9b1dd28e92f0
https://www.jianshu.com/p/46b6fa53cae4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章