目录
需求说明
-
官方提供的sink类型已经很多,但是有时候并不能满足实际开发当中的需求,此时我们就需要根据实际需求自定义某些sink。如:需要把接受到的数据按照规则进行过滤之后写入到某张mysql表中,所以此时需要我们自己实现MySQLSink。
-
官方也提供了自定义sink的接口:
代码开发步骤
根据官方说明自定义MysqlSink需要继承AbstractSink类并实现Configurable
实现对应的方法:
-
configure(Context context)
初始化context
-
start()
启动准备操作
-
process()
从channel获取数据,然后解析之后,保存在mysql表中
-
stop()
关闭相关资源
第一步:创建mysql数据库表
-- 创建一个数据库
CREATE DATABASE IF NOT EXISTS mysqlsource DEFAULT CHARACTER SET utf8 ;
USE mysqlsource;
-- 创建一个表,用户保存拉取目标表位置的信息
CREATE TABLE mysqlsource.flume2mysql (
id INT(11) NOT NULL AUTO_INCREMENT,
createTime VARCHAR(64) NOT NULL,
content VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
第二步:定义mysqlSink类
import org.apache.flume.conf.Configurable;
import org.apache.flume.*;
import org.apache.flume.sink.AbstractSink;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.