Flume 自定义source -- SQLSource (转为 json 格式)

用flume-ng-sql-source 从mysql 抽取数据到kafka被storm消费 flume从mysql采集到kafka中 阅读详情

 

个人使用flume  相对较多 ,对他的采集任务比较喜欢 ,自己做了一些数据库方向的的拓展。

虽然 github  上 有很多 自定义的 flume  sql-source  比如 大名鼎鼎 的  https://github.com/keedio/flume-ng-sql-source

但是 我个人在使用的过程中遇到了一些问题   也一直没有得到解决 ,https://github.com/keedio/flume-ng-sql-source/issues/59 

并且 格式 是csv  格式  。

所以我自己写了一套 sqlsource  基于原生的jdbc  连接 ,没有使用 其他的框架  ,读取数据库 转为 json  格式  。也便于解析 个人 项目 地址 ,欢迎提出不足 ,有问题 直接 提 issues。我会尽快帮大家解决 。

一、
在使用flume采集日志时,可以通过flume进行监控某一个文件把生产的数据传输给指定的sink,但是如果某段时间flume所在机器宕机了,那么当重新启动后,在去监控时,会导致有数据丢失,不是接着上一次的数据继续进行读取,因此针对这种情况时可能需要我们自定义一个source,记录偏移量,每次都是接着上次继续读,记录 数据已经发送的位置  。
二、
下面就是具体实现的代码
再写代码时可以参照官方给的source的源码进行编写.
flume的生命周期: 先执行构造器,再执行 config方法 --> start方法 --> processor.process–> stop

读取配置文件 ->  初始化 数据库连接及 相关参数   ->  解析 sql  ->  获取 resultsSet  ->  转为 Json ->  发送个channel  -> stop -> 记录当前位置 

具体 详见 https://github.com/HbnKing/Flume-ng-Database/blob/master/RDB/src/main/java/com/hbn/rdb/source/SQLSource.java

三 、

配置文件 

这里采用 loggersink    主要看一下Source  的 一些相关 配置 

支持 自定义 sql   

f2.sources = r1
f2.channels = c1
f2.sinks = k1

# 这里用 自己定义的 SQLSource
f2.sources.r1.type = com.hbn.rdb.source.SQLSource
f2.sources.r1.connectionurl = jdbc:oracle:thin:@//ip:1521/orcl
f2.sources.r1.user = yyj
f2.sources.r1.password = yyj
f2.sources.r1.driverclass= oracle.jdbc.driver.OracleDriver
f2.sources.r1.filepath = /var/log/sqllog
f2.sources.r1.filename = sqlSource.status
#f2.sources.r1.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.r1.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 > $@$
f2.sources.r1.customquery = select * from USER_COUPON_CODE_1
f2.sources.r1.begin = 0
f2.sources.r1.autoincrementfield = a.id
f2.sources.r1.batchsize = 1000
#具体定义channel
f2.channels.c1.type = memory
f2.channels.c1.capacity = 1000
f2.channels.c1.transactionCapacity = 100
#具体定义sink
f2.sinks.k1.type = logger
#组装source、channel、sink
f2.sources.r1.channels = c1
f2.sinks.k1.channel = c1

四  、  

启动命令 

bin/flume-ng agent --conf conf/ --conf-file conf/flume-conf1.properties  --name f2 -Dflume.root.logger=INFO,console

 

五  、  

查看结果 


{  "ID" : NumberLong("10000900000"), "COUPON_ID" : 900000, "ID_3" : NumberLong("10000900000") }
{ "ID" : NumberLong("10000700000"), "COUPON_ID" : 700000, "ID_3" : NumberLong("10000700000") }
{  "ID" : NumberLong("10000300000"), "COUPON_ID" : 300000, "ID_3" : NumberLong("10000300000") }
{ "ID" : NumberLong("10000800000"), "COUPON_ID" : 800000, "ID_3" : NumberLong("10000800000") }
{ "ID" : NumberLong("10000500001"), "COUPON_ID" : 500001, "ID_3" : NumberLong("10000500001") }
{  "ID" : NumberLong("10000500002"), "COUPON_ID" : 500002, "ID_3" : NumberLong("10000500002") }
{  "ID" : NumberLong("10000500003"), "COUPON_ID" : 500003, "ID_3" : NumberLong("10000500003") }

六 、

其他   

如有问题 ,请留言 ,欢迎提出不足 和 建议 。

感谢贡献 。

Flume 抽取MYSQL Oracle数据 JSON格式 推送Kafka Flume二次开发,支持抽取MYSQL Oracle数据库数据 以JSON格式推送至Kafka。 demo: 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.driverclass= oracle.jdbc.driver.OracleDriver sql_json.sources.sql_source.filename = sqlSource.status sql_json.sources.sql_source.customquery = SELECT INTID,ID_NO FROM TEST.TEST sql_json.sources.sql_source.begin = 0 sql_json.sources.sql_source.autoincrementfield = INTID 立即下载

相关推荐

flume-ng-sql-source.jar

flume是一个日志收集器,更多详细的介绍可以参照官网:http://flume.apache.org/ flume-ng-sql-source实现oracle增量数据读取 有了这个jar文件即可从关系型数据库拉去数据到flume

Flume1.8 抽取Mysql或Oracle数据转成JSON格式

Flume1.8 抽取Mysql或Oracle数据转成JSON格式

ytp552200ytp的博客 657

flume-ng-sql-source-1.4.4.jar

flume实现oracle增量数据读取github最新版1.4.4,Flume是最初只是一个日志收集器,但随着flume-ng-sql-source插件的出现,使得Flume从关系数据库采集数据成为可能

Flume案例——自定义interceptor处理数据,并使用mutilplexing selector将数据分路存储

实际需求: 将多个日志文件中的数据分类处理,采集出不同业务的数据,然后分路存储 主要知识点: 自定义interceptor 使用multiplexing selector将数据分路存储 1.模拟日志生成器 可以写一个shell脚本,模拟生成日志数据,规定日志数据格式:uid,behavior,type,timestamp while true do if [ $(($RANDOM % 2)) -eq 0] then echo "u$RANDOM,e1,shop,`date +%s`000" &

LOGAN'S BLOG 496

flume-ng-sql-source

包含flume-ng-sql-source-1.5.1&flume;-ng-sql-source-1.4.1 此内容均为网上下载

flume-ng-sql-source:Flume Source从SQL数据库导入数据

flume-ng-sql-source 该项目用于与sql数据库进行通信 当前支持SQL数据库引擎 在最后一次更新之后,该代码已与hibernate集成在一起,因此该技术支持的所有数据库均应正常工作。 编译与包装 $ mvn package 部署方式 将目标文件夹中的flume-ng-sql-source-.jar复制到flume plugins dir文件夹中 $ mkdir -p $FLUME_HOME/plugins.d/sql-source/lib $FLUME_HOME/plugins.d/sql-source/libext $ cp flume-ng-sql-source-0.8.jar $FLUME_HOME/plugins.d/sql-source/lib 通过数据库引擎进行特定安装 MySQL 下载官方的mysql jdbc驱动程序,并复制到libext

flume采集mysql中的表数据,使用flume-ng-sql-source的配置

因业务需求,需要采集mysql中的某表数据进行记录。被采集表中必须有增量数据字段,如自增id或者修改时间。 我这里得需求是要记录所有数据及发生改变得数据,因此增量条件字段为 last_modified 开发环境: jdk1.8 mysql5.6 flume1.8 flume默认是不支持sql source的,因此需要先添加flume-ng-sql-source 支持MySql SQL......

Di Qiang 的博客 8351

NVIDIA NCCL 安装和测试实战教程

ibrary)是用于深度学习应用的高性能通信库,可加速多GPU通信和同步。它能够在多个GPU之间进行高效的数据传输和集体操作,显著提高了分布式GPU系统上深度学习训练和推理的性能。NVIDIA NCCL是加速多GPU系统上深度学习应用的必不可少的工具。其高效的通信原语和集体操作显著提高了分布式训练和推理的性能,使其成为现代深度学习基础架构的关键组成部分。

weixin_39818775的博客 4431

【亲测免费】 Flume-ng-sql-source 使用教程

`flume-ng-sql-source` 是一个Apache Flume的扩展插件,允许Flume从SQL数据库中收集数据。项目集成了Hibernate,因此理论上支持所有Hibernate兼容的数据库引擎。它能够处理增量查询,且输出格式可配置为JSON。 ## 2. 项目快速启动 ### 依赖安装 首先确保已经安装了Apache Flume和Maven。 ### 下载项目 克隆项目仓库:...

gitblog_00608的博客 1499

python3.12 在用django5.0创建超级用户时,遇到AttributeError: module ‘hashlib‘ has no attribute ‘pbkdf2_hmac‘的问题

产生问题的原因是python3.12的hashlib没有自带pbkdf2_hmac函数,该函数是加密算法的一种,只要通过别的函数导入pbkdf2_hmac即可。还有一种方法是将django默认使用的pbkdf2_hmac改为hashlib自带的sha2或其他算法返回加密的密码,笔者以后会尝试用此类办法解决问题。2.找到报错文件的位置/usr/local/lib/python3.12/site-packages/django/utils/crypto.py。保存修改的文件,重新执行创建超级用户的命令成功。

weixin_67057943的博客 852

Halcon手眼标定保姆级教程:从‘眼在手上’到‘眼到手’两种模式全解析(附代码)

本文详细解析Halcon在机器人视觉引导中的手眼标定技术,涵盖Eye-in-Hand和Eye-to-Hand两种模式,提供从硬件准备到实战代码的完整解决方案。通过精确的相机标定和坐标转换,帮助实现工业自动化中机械臂与视觉系统的高精度协同作业。

weixin_42544461的博客 209

Flume自定义source

为什么80%的码农都做不了架构师?>>> ...

weixin_33750452的博客 143

边缘智能新篇章:RK3588上YOLOv8姿态估计的轻量化部署与性能优化实战

本文详细介绍了在RK3588平台上部署和优化YOLOv8姿态估计模型的完整流程。通过模型转换、ONNX中间表示和性能优化策略,实现在边缘设备上的高效实时推理,为嵌入式AI应用提供可行的轻量化解决方案。

ik6789012的博客 151

flume mysql 增量_MySQL数据实时增量同步到Kafka Flume

写在前面的话需求,将MySQL里的数据实时增量同步到Kafka。接到活儿的时候,第一个想法就是通过读取MySQL的binlog日志,将数据写到Kafka。不过对比了一些工具,例如:Canel,Databus,Puma等,这些都是需要部署server和client的。其中server端是由这些工具实现,配置了就可以读binlog,而client端是需要我们动手编写程序的,远没有达到我即插即用的期望和...

weixin_29728529的博客 578

从原始数据到农学模型:DJI M3M/P4M多光谱影像全链路处理实战

本文详细介绍了使用DJI M3M/P4M多光谱无人机进行农学建模的全链路流程。核心在于强调辐射标定的首要性,它将原始DN值转换为具有物理意义的反射率,是确保后续植被指数计算与模型反演准确性的基石。文章通过大疆智图和Pix4Dfields的实战演示,手把手指导完成数据处理、影像镶嵌及光谱信息提取,最终构建从光谱指数到叶面积指数等关键农学参数的反演模型,实现精准农业分析。

weixin_29281941的博客 244

用 OP-TEE 给 AI 模型“上锁”:密文存储、TEE 解密放行、推理后销毁(实战可落地)

本文提出一种基于OP-TEE的AI模型保护方案,通过两级密钥体系确保模型静态存储为密文,运行时仅在TEE内解密。方案采用KEK+DEK架构,DEK永不出TEE,支持分块解密与可验证擦除。该方案能有效防御静态分析、应用层逆向等威胁,但需承认其物理级攻击的局限性。文章详细描述了端到端架构、文件格式设计及TA实现要点,包括密钥管理、分块解密策略和销毁机制,为设备侧AI部署提供了工程可行的安全解决方案。

Interview_TC的博客 290

mysql增量同步kafka_MySQL数据实时增量同步到Kafka - Flume

写在前面的话需求,将MySQL里的数据实时增量同步到Kafka。接到活儿的时候,第一个想法就是通过读取MySQL的binlog日志,将数据写到Kafka。不过对比了一些工具,例如:Canel,Databus,Puma等,这些都是需要部署server和client的。其中server端是由这些工具实现,配置了就可以读binlog,而client端是需要我们动手编写程序的,远没有达到我即插即用的期望和...

weixin_39786617的博客 248

2xmax96717+max96724+agx orin驱动代码

说明:这里主要解决max96717的设备地址和sensor地址映射,vc0->vc1多颗max96717+max96724使用配置思路如下: 1、改变max96717的pipez stream id,然后max96724的pipe绑定使用相应的stream id 2、max96717默认是vc0,把vc0改写成vc1\vc2\vc3,然后max96724再重新映射vc输出

mantouyouyou的博客 114

flume-使用KafkaChannel读取不到数据

使用TAILDIR监听日志写入KafkaChannel。 配置如下: a1.sources = r1 a1.channels = c1 #描述source a1.sources.r1.type = TAILDIR a1.sources.r1.filegroups = f1 a1.sources.r1.filegroups.f1 = /opt/module/applog/log22/app.* a1.sources.r1.positionFile = /opt/module/flume/taildir_po

epitomizelu的专栏 3323

深入C++学习还必须掌握的一基础知识精讲

施磊C++语言基础提高课程笔记,包括了new/delete;malloc/free;引用和指针;const,指计和引用的结合;函数重载,inline的数,参数带默认值的函数;函数模板等知识点

GeniusAng的博客 1479

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Flume-NG-SQL-Source项目使用指南

Flume-NG-SQL-Source项目使用指南 项目基础介绍和主要编程语言 Flume-NG-SQL-Source是一个基于Apache Flume框架的自定义source组件,主要用于从关系数据库中抽取数据,并将其作为事件发送到Flume的channel中。该组件针对数据抽取做了优化,支持多种数据库,方便用户将数据库中的数据导入到数据处理系统中。 该项目主要使用Java编程语言进行开发,并遵...

gitblog_00646的博客 1078

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

十倍程序员 | 使用 Source Generator 将 JSON 转换成 C# 类

本文将介绍如何使用 Source Generator 将 JSON 字符串转换成 C# 类。

寒冰屋的专栏 1752

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Flume配置文件source难点详解

有关flume配置详解

m0_74903429的博客 890

flume-ng-sql-source读取数据库延迟8小时以上报错

用https://github.com/keedio/flume-ng-sql-source这个项目读取数据库的时候run.query.delay设置的时间过长,导致java.sql.SQLRecoverableException报错, MySql默认一个connection(连接)空闲超过8小时自动断开,而程序认为这个连接还是可用的,这个时候用这个过时connection去连接MySql时就会...

wen‘s blog 1094
上一篇: Spark 创建RDD (集合,本地文件,hdfs文件)基础数据源
下一篇: spark sqlcontext 读取json 文件
H.King
博客等级 码龄10年 4粉丝 13原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值