使用自由格式查询的Sqoop作业增量导入

时间:2015-09-06 09:30:57

标签: hadoop hdfs sqoop

我正在尝试使用自由格式查询执行sqoop作业增量导入。这是使用的查询

sqoop job --create importjobinl -- import --connect jdbc:mysql://localhost/test --username training --password training --query 'select id,name,unix_timestamp(time_updated) from intest where $CONDITIONS' --target-dir /user/new/lll/`date +%d%T|sed 's/://g'` -m 1 --check-column time_updated --incremental append  --last-value '1441526438'

作业没有被创建它显示。

Incremental imports require a table.
Try --help for usage instructions.

当我使用--table intest而不是--query时,它会起作用,但我想使用--query使用unix_timestamp将日期转换为epochtime,因为mysql表中的值是yyyy- mm-dd格式

使用的版本:Sqoop 1.2.0-cdh3u0

2 个答案:

答案 0 :(得分:0)

Sqoop 1.4.2添加了免费表单查询的Sqoop增量导入 JIRA链接:Sqoop Incremental import Support for free form queries

由于您使用的是Sqoop 1.2.0,因此您可能无法使用此功能

答案 1 :(得分:0)

  1. 使用sqoop进行初始拉动。
  2. 如果您使用上次修改的列作为日期,请确保列的日期格式为YYYY-MM-DD HH:MM:SS。
  3. 运行以下语句,以增加加载到您的hive表,其中包括免费查询。

    sqoop import --connect jdbc:mysql://localhost/test --username training --password training --query "select * from intest where $CONDITIONS" --hive-import --hive-table db_name_x.table_name_x --incremental lastmodified -check-column date_x --target-dir /user/xyz -m 1