Flume流到mysql

时间:2017-02-20 02:13:00

标签: mysql flume flume-ng

我一直在尝试使用APACHE KAFKA和FLUME将数据流式传输到MySQL数据库。 (这是我的水槽配置文件)

agent.sources=kafkaSrc
agent.channels=channel1
agent.sinks=jdbcSink

agent.channels.channel1.type=org.apache.flume.channel.kafka.KafkaChannel
agent.channels.channel1.brokerList=localhost:9092
agent.channels.channel1.topic=kafkachannel
agent.channels.channel1.zookeeperConnect=localhost:2181
agent.channels.channel1.capacity=10000
agent.channels.channel1.transactionCapacity=1000


agent.sources.kafkaSrc.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafkaSrc.channels = channel1
agent.sources.kafkaSrc.zookeeperConnect = localhost:2181
agent.sources.kafkaSrc.topic = kafka-mysql

***agent.sinks.jdbcSink.type = How to declare this?***
agent.sinks.jdbcSink.connectionString = jdbc:mysql://1.1.1.1:3306/test
agent.sinks.jdbcSink.username=user
agent.sinks.jdbcSink.password=password
agent.sinks.jdbcSink.batchSize = 10
agent.sinks.jdbcSink.channel =channel1
agent.sinks.jdbcSink.sqlDialect=MYSQL
agent.sinks.jdbcSink.driver=com.mysql.jdbc.Driver
agent.sinks.jdbcSink.sql=(${body:varchar})

我知道如何将数据流式传输到hadoop或hbase(logger类型或hdfs类型),但无法找到要流入mysql DB的类型。所以我的问题是如何声明jdbcSink.type?

1 个答案:

答案 0 :(得分:1)

您始终可以为MySQL创建自定义接收器。这就是我们使用Cygnus工具在FIWARE上所做的。

随意从中获取灵感:https://github.com/telefonicaid/fiware-cygnus/blob/master/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/sinks/NGSIMySQLSink.java

它扩展了我们所有接收器的另一个自定义基类:https://github.com/telefonicaid/fiware-cygnus/blob/master/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/sinks/NGSISink.java

基本上,您必须扩展AbstractSink并实现Configurable接口。这意味着至少要覆盖以下方法:

public Status process() throws EventDeliveryException

public void configure(Context context)

分别