flume拦截mysql_Flume-自定义 Source 读取 MySQL 数据

本文档详细介绍了如何编写一个自定义的Flume Source,用于从MySQL数据库中读取数据。通过创建MySQLSourceHelper类进行JDBC操作,实现数据查询和元数据更新。同时提供了一个MySQLSource类,作为Flume的Source实现。配置文件示例和测试步骤也一并给出。
摘要由CSDN通过智能技术生成

这里记录的是自己手动实现。

测试中要读取的表

CREATE TABLE`student` (

`id`int(11) NOT NULLAUTO_INCREMENT,

`name`varchar(255) COLLATE utf8_bin DEFAULT NULL,

`age`int(11) DEFAULT NULL,PRIMARY KEY(`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

记录表(必须),告诉 Flume 每次从哪开始读取

CREATE TABLE`flume_meta` (

`source_tab`varchar(255) COLLATE utf8_bin NOT NULL,

`current_index`bigint(255) DEFAULT NULL,PRIMARY KEY(`source_tab`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

一、编写自定义 Source

1.添加 pom 依赖

4.0.0

com

flume

1.0-SNAPSHOT

org.apache.flume

flume-ng-core

1.9.0

mysql

mysql-connector-java

5.1.27

org.apache.maven.plugins

maven-compiler-plugin

1.8

1.8

UTF-8

2.编写类

MySQLSourceHelper,JDBC 工具类,主要是读取数据表和更新读取记录

packagesource;importorg.apache.flume.Context;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.math.BigInteger;import java.sql.*;importjava.util.ArrayList;importjava.util.List;public classMySQLSourceHelper {private static final Logger LOG = LoggerFactory.getLogger(MySQLSourceHelper.class);//开始 id

privateString startFrom;private static final String DEFAULT_START_VALUE = "0";//表名

privateString table;//用户传入的查询的列

privateString columnsToSelect;private static final String DEFAULT_Columns_To_Select = "*";private staticString dbUrl, dbUser, dbPassword, dbDriver;private static Connection conn = null;private static PreparedStatement ps = null;//获取 JDBC 连接

private staticConnection getConnection() {try{

Class.forName(dbDriver);returnDriverManager.ge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值