我正在使用sqoop import语句将一组表从Oracle数据库导入Hive:
sqoop导入“ -Dorg.apache.sqoop.splitter.allow_text_splitter = true” --connect CONNECTIONSTRING --table TABLENAME --username用户名--password密码--hive-import --hive-drop-import-delims- -hive-overwrite --hive-table HIVE_TABLE_NAME1 --null-string'\ N'--null-non-string'\ N'-m 1
并且我在此sqoop语句中使用以下检查列关键字来增加负载:
-检查列COLUMN_NAME-最后修改的增量-最后一个值HARDCODED_DATE
我对此进行了测试,但效果很好,但我想对其进行修改,使其具有动态性,而不必将日期硬编码到语句中,我可以将其作为参数传递,以便检查指定的列并获取该日期之后的所有数据。我知道必须从另一个文件中传递日期,但是我不太确定文件的结构应该如何以及如何引用此sqoop语句。任何帮助或指导将不胜感激。预先谢谢你!
答案 0 :(得分:0)
您可以使用sqoop作业。
使用sqoop作业,您必须将last-value应用为0,它将导入并更新作业中的数据,因此每次只需运行sqoop-job --exec <>,它将更新数据而无需任何操作硬编码值。
sqoop job create <<job_name>> -- import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" --connect <<db_url>> --table <<db_name>> --username <<username>> --password <<password>> --hive-import --hive-drop-import-delims --hive-overwrite --hive-table <<hive_table>> --null-string '\N' --null-non-string '\N' -m 1 --incremental lastmodified --check-column timedate --last-value 0
sqoop job --exec <<job_name>>
有关更多详细信息,请访问https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_literal_sqoop_job_literal