将日期参数传递给 sqoop 导入 Hive table
Passing date parameter to sqoop import into Hive table
我正在使用 sqoop 导入语句将一组 table 从 Oracle 数据库导入 Hive,如下所示:
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" --connect CONNECTIONSTRING --table TABLENAME --username USERNAME --password PASSWORD --hive-import --hive-drop-import- delims --hive-overwrite --hive-table HIVE_TABLE_NAME1 --null-string '\N' --null-non-string '\N' -m 1
并且我在此 sqoop 语句中使用以下检查列关键字进行增量加载:
--check-column COLUMN_NAME --incremental lastmodified --last-value HARDCODED_DATE
我测试了它,它工作得很好,但我想修改它,使其成为动态的,我不必将日期硬编码到语句中,我可以将它作为参数传递,以便它检查指定的列并获取该日期之后的所有数据。我知道日期必须从不同的文件传递,但我不太确定文件的结构应该是什么以及它将如何引用此 sqoop 语句。任何帮助或指导将不胜感激。提前致谢!
您可以使用 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
我正在使用 sqoop 导入语句将一组 table 从 Oracle 数据库导入 Hive,如下所示:
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" --connect CONNECTIONSTRING --table TABLENAME --username USERNAME --password PASSWORD --hive-import --hive-drop-import- delims --hive-overwrite --hive-table HIVE_TABLE_NAME1 --null-string '\N' --null-non-string '\N' -m 1
并且我在此 sqoop 语句中使用以下检查列关键字进行增量加载:
--check-column COLUMN_NAME --incremental lastmodified --last-value HARDCODED_DATE
我测试了它,它工作得很好,但我想修改它,使其成为动态的,我不必将日期硬编码到语句中,我可以将它作为参数传递,以便它检查指定的列并获取该日期之后的所有数据。我知道日期必须从不同的文件传递,但我不太确定文件的结构应该是什么以及它将如何引用此 sqoop 语句。任何帮助或指导将不胜感激。提前致谢!
您可以使用 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