题目描述:
由于历史遗留问题,希望将Flume采集到的日志数据也同步保存到MySQL中一份,但是Flume目前不支持直接向MySQL中写数据,所以需要用到自定义Sink,自定义一个MySQLSink
日志数据默认在Linux本地的/data/soft/logs/user.log
日志文件中,使用Flume采集到MySQL中到user
表中。
user.log
中的数据格式是这样的:字段之间使用逗号分割
```
2020-01-01 01:10:23,tom,18,beijing
2020-01-01 01:12:09,jack,20,shanghai
2020-01-01 01:13:17,jessic,15,guangzhou
```
MySQL中的`user`表结构信息如下:
```
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255),
age int(11),
city varchar(255),
create_time datetime(0),
PRIMARY KEY (id)
);
```
效果:
最终可以在MySQL的user
表中看到user.log
中的数据
```
mysql> select * from user;
+----+--------+-----+-----------+---------------------+
| id | name | age | city | create_time |
+----+--------+-----+-----------+---------------------+
| 1 | tom | 18 | beijing | 2020-01-01 01:10:23 |
| 2 | jack | 20 | shanghai | 2020-01-01 01:12:09 |
| 3 | jessic | 15 | guangzhou | 2020-01-01 01:13:17 |
+----+--------+-----+-----------+---------------------+
3 rows in set (0.10 sec)
```
任务要求:
1:在Flume中使用Exec Source+File Channel+MySQL Sink实现数据采集入库
任务提示、思路分析:
1:参考Flume中自定义Sink的文档(用户文档+开发者文档)以及系统内置KafkaSink的源码