如何使用sqoop验证?

问题描述 投票:0回答:1

能否请你帮我解决以下几点。

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

请帮我团队。谢谢。

谢谢你,西普拉

sqoop
1个回答
1
投票

我的理解是,在开始增量处理之前,需要在oracle数据库中验证新记录。我认为你不能根据记录的大小进行验证。但是,如果您有一个偏移或TS列,将有助于验证。

自上次运行/作业/检查以来,如何知道oracle中是否有新记录?

您可以使用两种sqoop导入方法执行此操作,以下是两者的示例和说明。

sqoop增量

以下是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

© www.soinside.com 2019 - 2024. All rights reserved.