如何使用sqoop验证?

时间:2017-12-17 07:31:50

标签: sqoop

请你帮我解决以下几点。

  1. 我今天有一个带有大量no.of记录的oracle数据库 - 假设5TB数据,所以我们可以使用vaildator sqoop框架 - 它将验证并导入HDFS。
  2. 然后,假设明天 - 我将在上述TB数据之上接收新记录,那么我如何将这些新记录(只有新记录导入现有目录)并使用验证器sqoop框架进行验证。
  3. 我有一个要求,如果新记录到达,如何使用sqoop验证器。
  4. 我需要在新记录中使用的sqoop validatior框架到达HDFS中导入。
  5. 请帮我团队。谢谢。

    谢谢你, SIPRA

1 个答案:

答案 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