Kafka Connector特性可以对源数据库到目标数据库的拷贝处理,可以借助此特性实现自己的ETL工具用于数据抽取、清洗等功能。
其数据流程图:
Connector相关接口
通过继承SourceConnector和SinkConnector实现自己的Connector,分别表示对源数据的读取和对目标库的写入。
Connector的主要接口:
Initialize this connector, using the provided ConnectorContext to notify the runtime of input configuration changes.initialize(ConnectorContext ctx)
initialize(ConnectorContext ctx, List<Map<String,String>> taskConfigs)
Initialize this connector, using the provided ConnectorContext to notify the runtime of input configuration changes and using the provided set of Task configurations.
Start this Connector. start(Map<String,String> props)
stop()
Stop this connector.
taskClass()
Returns the Task implementation for this Connector.
Returns a set of configurations for Tasks based on the current configuration, producing at most count configurations.taskConfigs(int maxTasks)
通过继承SourceTask和SinkTask实现对应的Connector的业务逻辑任务。
其对应的接口可查看task接口api。
对实现的Connector可通过一下配置文件进行配置
connect-file-source.properties配置源系统的connector:
#connector唯一的名称
name=local-console-source
#connector的实现
connector.class=org.apache.kafka.connect.file.FileStreamSourceConnector
#connector需要创建的最大任务数
tasks.max=1
#需要处理的topic类别
topic=connect-test
connect-file-sink.properties配置目标系统的connector(和以上配置类似):
name=local-file-sink
connector.class=org.apache.kafka.connect.file.FileStreamSinkConnector
tasks.max=1
file=test.sink.txt
#接收topic类别列表
topics=connect-test
REST API
Kafka Connect提供rest api接口,用于管理所有的connectors信息,可通过rest api查看对应接口信息。
对于此特性0.9版本的客户端中未找对对应的connect包(不知包不对还是怎么回事),因此也未能写出测试的demo,待以后再来补上demo。