Kafka connector (kafka核心API)
前言
Kafka Connect是一个用于将数据流输入和输出Kafka的框架。Confluent平台附带了几个内置connector,可以使用这些connector进行关系数据库或HDFS等常用系统到Kafka的数据传输,也是用来构建ETL的一种方案。本次测试以pgsql为主
Kafka Connect基本概念:
- Kafka Connect实际上是Kafka流式计算的一部分
- Kafka Connect主要用来与其他中间件建立流式通道
- Kafka Connect支持流式和批处理集成
Kakfa Connect环境准备
Step1.
下载confluentinc-kafka-connect-jdbc-5.5.0.zip
压缩包中 包含有 Confluent平台的JDBC的Connect 是实现数据复制 etl 的核心库
Step2.
如果目标库与源库是mysql 还需要下载 mysql 的驱动包 ,这里要注意版本,和后续配置文件中的链接串,以及用户的授权等细节
https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar
step3.
将解压下载好的Connect压缩包,创建一个存放目录,将解压后的文件移到到该目录下,并将MySQL驱动包移动到Connect解压后的lib
目录下:
Step4
编辑connect-distributed.properties
配置文件,修改如下配置项(一定要确保8083端口开放)
# Broker Server的访问ip和端口号
bootstrap.servers=
主机
ip:9092
# 指定集群id
group.id=connect-cluster
# 指定rest服务的端口号
rest.port=8083
# 指定Connect插件包的存放路径
plugin.path=/xxx/xxx/xxx
step5.
启动Kafka Connect
启动命令如下
![](https://img2020.cnblogs.com/blog/2333431/202103/2333431-20210326113912240-2080660103.png)
参数 –daemon 表示后台启动
启动成功后,使用postman访问http://{ip}:8083/connector-plugins
会返回如下界面
表示Kafka Connect的环境ok
Step6.
Source Connector与Sink Connector如何与pgsql做集成。
首先使用API 创建 source connector
地址
http://{ip}:8083/connectors
参数
{
"name":"test-upload-mysql",
"config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url":"jdbc:postgresql://124.71.155.137:5432/db2021?user=postgres&password=postgres",
"table.whitelist":"comments",
"incrementing.column.name":"id",
"mode":"incrementing",
"topic.prefix":"test-mysql-"
}
}
参数格式一定是json 同时注意配置postman 请求参数格式 为application/json
参数说明:
- name:指定新增的connector的名称
- config:指定该connector的配置信息
- connector.class:指定使用哪个Connector类
- connection.url:指定pg的连接url
- table.whitelist:指定需要加载哪些数据表
- incrementing.column.name:指定表中自增列的名称
- mode:指定connector的模式,这里为增量模式
- topic.prefix:Kafka会创建一个Topic,该配置项就是用于指定Topic名称的前缀,后缀为数据表的名称。
返回值如下:
{
"name":"test-upload-mysql",
"config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url":"jdbc:pgsql://{ip}:3306/kafka_store?user=root&password=123456a.",
"table.whitelist":"users_input",
"incrementing.column.name":"uid",
"mode":"incrementing",
"topic.prefix":"test-mysql-",
"name":"test-upload-mysql"
},
"tasks":[
],
"type":"source"
}
然后再次调用 connectors 接口,可看到名为test-upload-mysql 的connector
Step7
像数据库中添加数据注意源表名一定要和上述config 配置中table.whitelist值保持一致
Step8
可以启动consumer 查看kafka 对应topic ,topic 名称为config 配置中的前缀加表名
Step9
Kafka
Connect Sink和MySQL集成
同样调用
connectors 接口参数列表不同,具体如下
'{"name":"test-download-mysql","config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url":"jdbc:pgsql://{ip}:3306/kafka_store?user=root&password=123456a.",
"topics":"test-mysql-users_input",
"auto.create":"false",
"insert.mode": "upsert",
"pk.mode":"record_value",
"pk.fields":"uid",
"table.name.format": "users_output"}}'
参数说明:
- name:指定新增的connector的名称
- config:指定该connector的配置信息
- connector.class:指定使用哪个Connector类
- connection.url:指定MySQL的连接url
- topics:指定从哪个Topic中读取数据
- auto.create:是否自动创建数据表
- insert.mode:指定写入模式,upsert表示可以更新及写入
- pk.mode:指定主键模式,record_value表示从消息的value中获取数据
- pk.fields:指定主键字段的名称
- table.name.format:指定将数据输出到哪张数据表上
成功返回对应信息
到此 connector 搭建完成,刷新目标表,即可看到数据已经同步
要注意的点 有如下几方面
- 配置参数格式问题
- 服务器对应端口号问题
- Kafka服务一定要先启动
- 数据库连接参数问题
原文转自 https://blog.51cto.com/zero01/2498682
Kafka connector (kafka核心API)的更多相关文章
- 分布式消息队列kafka系列介绍 — 核心API介绍及实例
原文地址:http://www.inter12.org/archives/834 一 PRODUCER的API 1.Producer的创建,依赖于ProducerConfig public Produ ...
- Flink Kafka Connector 与 Exactly Once 剖析
Flink Kafka Connector 是 Flink 内置的 Kafka 连接器,它包含了从 Kafka Topic 读入数据的 Flink Kafka Consumer 以及向 Kafka T ...
- Debezium SQL Server Source Connector+Kafka+Spark+MySQL 实时数据处理
写在前面 前段时间在实时获取SQLServer数据库变化时候,整个过程可谓是坎坷.然后就想在这里记录一下. 本文的技术栈: Debezium SQL Server Source Connector+K ...
- 《Flink SQL任务自动生成与提交》后续:修改flink源码实现kafka connector BatchMode
目录 问题 思路 kafka参数问题 支持batchmode的问题 参数提交至kafkasource的问题 group by支持问题 实现 编译 测试 因为在一篇博文上看到介绍"汽车之家介绍 ...
- debezium、kafka connector 解析 mysql binlog 到 kafak
目的: 需要搭建一个可以自动监听MySQL数据库的变化,将变化的数据捕获处理,此处只讲解如何自动捕获mysql 中数据的变化 使用的技术 debezium :https://debezium.io/d ...
- kafka生产者和消费者api的简单使用
kafka生产者和消费者api的简单使用 一.背景 二.需要实现的功能 1.生产者实现功能 1.KafkaProducer线程安全的,可以在多线程中使用. 2.消息发送的key和value的序列化 3 ...
- Kafka相关概念及核心配置说明
1. Kafka简介 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性 ...
- 【Kafka】Kafka简单介绍
目录 基本介绍 概述 优点 主要应用场景 Kafka的架构 四大核心API 架构内部细节 基本介绍 概述 Kafka官网网站:http://kafka.apache.org/ Kafka是由Apach ...
- Spark Streaming + Kafka整合(Kafka broker版本0.8.2.1+)
这篇博客是基于Spark Streaming整合Kafka-0.8.2.1官方文档. 本文主要讲解了Spark Streaming如何从Kafka接收数据.Spark Streaming从Kafka接 ...
- kafka实战教程(python操作kafka),kafka配置文件详解
kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...
随机推荐
- 任务信息的高级选项(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 张同学说,[高级]选项卡很重要,嗯,本妖深以为然! 这里的[高级]选项卡,是指[任务信息]里的,在默认视图下,只要双击某任 ...
- int i=i++;和i=++i;和i++
1.int i=i++; 2.i=++i; 3.i++
- WebRTC音频通话升级为视频通话
我们有时候在音频通话过程中,想要改成视频通话.如果挂断当前通话再重新发起视频通话就会显得比较麻烦. 因此很多app提供了将音频通话升级成视频通话的功能,同时也有将视频通话降为音频通话的功能. 本文演示 ...
- CF1077A Frog Jumping 题解
Content 在一个数轴上有一个动点,初始时在 \(0\) 这个位置上,接下来有若干次操作,对于第 \(i\) 次操作: 如果 \(i\) 是奇数,那么动点往右移 \(a\) 个单位. 如果 \(i ...
- java 多线程,单例模式类(创建对象)最优写法
单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创 ...
- Python sys模块 os模块、OS.open() | open() | OS._exit() | sys.exit() | exit()
sys模块:负责程序和Python交互. sys常用方法:=========================== sys.stdout.write('please:')val = sys.stdin ...
- java 数据类型String 【正则表达式】匹配工具 Pattern和Matcher
Pattern和Matcher的介绍: Pattern对象是正则表达式编译后在内存中的表示形式,因此正则表达式宇符串必须先被编译为Pattern对象,然后再用该Pattern对象创建对应的Matche ...
- ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器。用springframework自带的便可
ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器.用springframework自带的便可
- reducer在react使用
编写store.js 小state reducer 怎么来 纯函数 state+action 生成新的state actions type return{ } state action === s ...
- Linux(Centos) 设置显示vim行号
1.修改vimrc文件 vim /etc/vimrc 2.在最后添加 set nu 如下图片所示 然后wq! 保存退出