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