请你帮我解决以下几点。
请帮我团队。谢谢。
谢谢你, SIPRA
答案 0 :(得分:1)
我的理解是,在开始增量处理之前,需要在oracle数据库中验证新记录。我认为你不能根据记录的大小进行验证。但是,如果您有一个偏移或TS列,将有助于验证。
如何知道自上次运行/作业/检查以来oracle中是否有新记录?
您可以使用两种sqoop导入方法执行此操作,以下是两者的示例和说明。
sqoop incremental
以下是sqoop增量导入的示例
sqoop import --connect jdbc:mysql://localhost:3306/ydb --table yloc --username root -P --check-column rDate --incremental lastmodified --last-value 2014-01-25 --target-dir yloc/loc
此链接解释了它:https://www.tutorialspoint.com/sqoop/sqoop_import.html
使用查询选项sqoop导入
在这里,您基本上使用查询中的where条件,并提取大于上次接收日期或偏移列的数据。
以下是sqoop import \
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \
--username retail_dba --password cloudera \
--query 'select * from sample_data where $CONDITIONS AND salary > 1000' \
--split-by salary \
--target-dir hdfs://quickstart.cloudera/user/cloudera/sqoop_new
隔离验证和导入作业
如果你想独立运行验证和导入工作,你在sqoop中有另一个实用工具,它是sqoop eval,你可以在rdbms上运行查询并将输出指向文件或变量在你的代码并将其用于验证目的。
语法:$ sqoop eval \
--connect jdbc:mysql://localhost/db \
--username root \
--query “SELECT * FROM employee LIMIT 3”
在此解释:https://www.tutorialspoint.com/sqoop/sqoop_eval.htm
sqoop中的验证参数
您可以使用此参数来验证RDBMS和HDFS之间导入/导出的内容之间的计数
—validate
更多相关内容:https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#validation