flume增量采集数据
时间:2019-10-25
本文章向大家介绍flume增量采集数据,主要包括flume增量采集数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对于flume的增量抽取,首先想到的就是常用的那几种方法,监控日志,触发器,版本号,时间戳等等,虽然可以实现,但都对数据源有了一定限制,假如客户的系统内部表没有那些东西,这就是一件很难搞的事了,毕竟对方数据库不能随便动。
这个时候可以采用 $@$,它可以表示增量列上一次查询的值。,将它加入sql语句中所查询的数据就实现了增量,当然在navicat中使用是不支持这个符号的,flume可能封装了一些方法对$@$进行了解析,在这方面并没有太多了解。
a1.channels=ch1 a1.channels.ch1.type=memory a1.sources = src-1 a1.sources.src-1.channels=ch1 a1.sources.src-1.type = org.keedio.flume.source.SQLSource a1.sources.src-1.run.query.delay=60000 a1.sources.sql-source.start.from=0 #所采集数据库的地址和数据库名 a1.sources.src-1.hibernate.connection.url= #数据库用户名 a1.sources.src-1.hibernate.connection.user = #数据库密码 a1.sources.src-1.hibernate.connection.password = a1.sources.src-1.hibernate.connection.autocommit = true a1.sources.src-1.hibernate.dialect=org.hibernate.dialect.SQLServerDialect #驱动类名 a1.sources.src-1.hibernate.connection.driver_class=com.microsoft.sqlserver.jdbc.SQLServerDriver #通过sql语句进行抽取,当需要实现增量抽取 $@$ 表示增量列上一次查询的 #值,记录在status文件中,所以查询值中也必须有该值以及需要有一个主键ID。#其他条件可根据业务//情况作更改。 a1.sources.src-1.custom.query=select test1.id,test1.name,test2.address from test1 full join test2 on test1.id=test2.id where test1.id> $@$ or test2.id>$@$ #status文件的存放路径,当执行flume该文件会在路径下自动生成 a1.sources.src-1.status.file.path=/home/bigdata/ #status文件名 a1.sources.src-1.status.file.name = src-1.ss.status a1.sources.src-1.batch.size = 6000 a1.sources.src-1.max.rows = 1000 a1.channels.ch1.capacity = 10000 a1.channels.ch1.transactionCapacity = 1000 a1.sinks=k1 #自定义下沉jar包名 a1.sinks.k1.type=MysqlSink #所下沉到的数据库地址及数据库名 a1.sinks.k1.url= #下沉到的数据库表名 a1.sinks.k1.tableName= #数据库用户名 a1.sinks.k1.user= #数据库密码 a1.sinks.k1.password= #字段名和上面的sql查询结果要一致 a1.sinks.k1.column_name=id,name,address a1.sinks.k1.channel=ch1 a1.sinks.k1.batchSize=100
以上是我做过的一个案例实现了flume链表的增量抽取。
原文地址:https://www.cnblogs.com/ffhaha/p/11739183.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JavaWeb第四讲 会话跟踪技术HttpSession、Cookie、url、隐藏表单域
- springBoot 入门(三)—— 使用 RestController
- SSM第一讲 Spring概述和基础知识详解
- springBoot 入门(四)—— 使用 纯注解方式的junit整合测试
- ClassLoader工作机制
- SSM第三讲 SpringAOP开发
- 如何加载Class文件到JVM
- spring + maven 实现发送邮件
- SSM第四讲 Mybatis原理及开发流程
- SSM第五讲 动态SQL与高级查询
- SSM第六讲 MyBatis的高级特性
- SSM第七讲 SpringMVC概述和基础知识详解
- SSM第八讲 SpringMVC高级特性
- SSM第九讲 Spring+SpringMVC+MyBatis框架整合
- 大型项目技术栈第一讲 Vue.js的使用