一、说明:
Flume原版在抽取关系型数据库MYSQL或Oracle时候,数据只支持CSV格式,在使用过程中发现如果数据库字段中有些字段值包含逗号的时候,在解析的过程中会造成不便导致解析数据错误,以及数据库表增减字段的时候也不是很方便使用,所有将Flume二次开发,在抽取关系型数据库MYSQL或Oracle时候,去掉CSV格式,支持JSON格式发送,方便解析。
二、下载:
1、说明:Flume版本是1.8.0版本,下载之后直接部署使用即可,已配置完备。
2、地址:Flume抽取MYSQLOracle数据JSON格式推送Kafka-MySQL文档类资源-CSDN下载
3、配置例子-demo
sql_json.channels = file_channel
sql_json.sources = sql_source
sql_json.sinks = kafka_sink
###########sql source#################
# 这里用 自己定义的 SQLSource
sql_json.sources.sql_source.type = com.hbn.rdb.source.SQLSource
sql_json.sources.sql_source.connectionurl = jdbc:oracle:thin:@IP:port/orcl
sql_json.sources.sql_source.user = abc123
sql_json.sources.sql_source.password = abc123
sql_json.sources.sql_source.driverclass= oracle.jdbc.driver.OracleDriver
sql_json.sources.sql_source.filepath = ./log/status
sql_json.sources.sql_source.filename = sqlSource.status
#f2.sources.sql_source.customquery = select a.id,a.COUPON_id,b.id from USER_COUPON_CODE_1 a ,COUPON_CODE b where a.COUPON_id = b.id
#f2.sources.sql_source.customquery = select a.id,a.COUPON_id,b.id from USER_COUPON_CODE_1 a ,COUPON_CODE b where a.COUPON_id = b.id and a.id > $@$
sql_json.sources.sql_source.customquery = SELECT INTID,ID_NO ,ID_NAME FROM TEST.TEST
sql_json.sources.sql_source.begin = 0
sql_json.sources.sql_source.autoincrementfield = INTID
###########file channels#################
sql_json.channels.file_channel.type = file
#检查点文件夹
sql_json.channels.file_channel.checkpointDir = ./log/sql_json_test_checkpoint
#缓存数据文件夹
sql_json.channels.file_channel.dataDirs = ./log/sql_json_test_checkdefer
sql_json.channels.file_channel.transactionCapacity = 100000
###############kafka sink###################
sql_json.sinks.kafka_sink.type =org.apache.flume.sink.kafka.KafkaSink
sql_json.sinks.kafka_sink.kafka.topic = sql_json_test
sql_json.sinks.kafka_sink.kafka.bootstrap.servers = IP1:9092,IP2:9092,IP3:9092
sql_json.sinks.kafka_sink.flumeBatchSize = 20
sql_json.sinks.kafka_sink.custom.encoding = UTF-8
sql_json.sinks.kafka_sink.channel = file_channel
sql_json.sources.sql_source.channels = file_channel