Streamsets(三)SS配置MySQL数据同步到本地目录

1、配置pipeline

安装好SS并配置好MySQL驱动后简单的测试从MySQL读取数据,写入到本地的文件系统(这里说的本地指的是运行SS服务的服务器)

1.1、配置JDBC Query Consumer

这里需要定义一个执行的SQL语句,SQL语句需要符合相关规范,包括有where条件,order by 排序规则,如下:

select * from user_organ_base where date_created>'${OFFSET}' order by date_created

在下面声明了Initial Offset指为2015-08-26 11:36:54,Offset Column为date_created,Query Interval位10,结合我们的SQL语句,表明每间隔10秒取执行一次SQL,给定的排序字段为date_created字段,给定的默认值为2015-08-26 11:36:54,那第一次执行的完整SQL语句实际上是

select * from user_organ_base where date_created>'2015-08-26 11:36:54' order by date_created

假设我们的表有10W条数据,那这次获取到1000条数据,这1000条数据会根据date_created进行排序,最后一条数据的date_created值为2015-09-26 11:36:54,那下一次执行的SQL语句实际上是

select * from user_organ_base where date_created>'2015-09-26 11:36:54' order by date_created

可以看到每次data_created都在变化,相当于一段一段的往后取数据,因此我们在定义SQL Query的时候不可以将date_created的where条件写死,而是使用>'${OFFSET}'的方式声明,这个OFFSET就是我们定义的Offset Colum字段,初始值是我们所给定的,后续每次执行的时候SS会字段将其更新,保证SQL执行的数据不会重复

 

 

如果想重置这个OFFSET值的话可以选择reset origin,这样offset就会被重置为我们设置的默认值

 

 

 

 

1.2、配置Local FS

注意Directory Template的配置是需要安装特定规则进行配置的,最终数据就生成在这个目录下

 

 

2、启动

直接运行刚刚的pipeline

数据都在SS服务器的本地进行了存储,该SQL每隔10s执行一次,但是我的数据总量只有6168,offset在运行完第一次后已经被更新为最大值,即使任务一直不关闭也不会再从mysql读取数据并写到本地了

如果第二次运行该pipeline时无任何报错信息,但是监控图表中input和output一直为0,可以试着将offset重置一下再运行pipeline

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值