【Sqoop】Sqoop如何增量抽取数据

 

实现方法:

利用--where参数对关系型数据库数据进行筛选,将结果导入非关系型数据库。根据特殊字段,将日期作为一个查询条件对源数据进行匹配,将符合条件的记录作为结果采集到非关系型数据库中

格式:

import --connect jdbcurl --username xxxx--password ****** --table tablename  --where "data_insert like '2018-08-16%' " --target-dir /user/scapp/tablename --null-non-string \\N --null-string \\N --lines-terminated-by \n  --hive-import --hive-overwrite --hive-table hivedb.hivetable --delete-target-dir -m 1 --fields-terminated-by \001 --hive-drop-import-delims

参数解析:

--connect :连接的关系数据库的jdbc信息

--username:关系数据库的登录账户

--password:关系数据库的登录密码

--table: 关系数据库表名

 --hive-import: 从关系型数据库向非关系型数据库中导入数据的标志

--where:从关系型数据库导入数据时的查询条件,接where的查询条件。例如:‘–where id<100’

--table:关系数据库表名

 

注意事项:

1.参数解析未尽之处可参照Mysql导入数据到Hive 的可选参数内容

2.按日增量采集的前提是历史数据未做变更,只需将当日新增数据插入非关系型数据库中

3.本质上只是按照一定查询条件对源数据进行查询后采集,所以查询条件并没有固定格式,查询的字段不限于日期格式的字段,也可以是字符串型或数值型的字段。查询方式是精确查询,也可以是模糊查询。

4.对于字符串型字段,匹配时,一般是使用模糊查询的方式进行匹配 colname like 'yyyy-mm-dd%',注意匹配合适的日期格式

5.一般而言日期格式的字段时可以使用>,<,=符号进行查询,也可以将日期格式的字段值使用函数转化为字符串,参照字符串型字段的方法进行匹配

6.数值型的字段可以使用使用>,<,=符号进行查询

7.该方法不限于获取当天的数据,也可以是某个指定时间段的数据,取决于筛选条件的匹配

8.在工作流中,可以将日期作为一个工作流变量,通过引用该变量,动态的变化查询条件,定时的抽取指定日期的数据

你可能感兴趣的:(大数据,CDH)