内容
1.目的
Sqoop Validation是为了验证复制的数据。 在本章中,我们将学习Sqoop中整个验证的概念。 了解sqoop中验证的目的。Sqoop验证语法和配置,以及sqoop验证的示例和限制。
2.Sqoop验证
Sqoop validation是验证复制的数据。 通过比较来自源数据的行数以及目标数据副本的行数来验证, 在Import的时候,所有的行被删除或添加时,Sqoop记录这些更改 并且更新日志文件。
3. Sqoop Validation Interface
Sqoop验证有3个Interface,如下所示:
ValidationThreshold
使用ValidationThreshold来确定源数据和目标数据之间的误差范围是否可接受,如Absolute,Percentage Tolerant等。默认实现是AbsoluteValidationThreshold。
用来保证来自源和目标的行数相同。
ValidationFailureHandler
负责处理失败的信息,如记录错误/警告等信息。默认实现是LogOnFailureHandler。
Validator
默认的实现是RowCountValidator。验证来自源以及目标的行计数。
4.Sqoop中进行验证的目的
Sqoop的主要目的是验证复制的数据。 无论是Sqoop导入或导出通过比较来自源的行计数以及目标数据的行数。
5. Sqoop Validation 语法
$ sqoop import(generic-args)(import-args) $ sqoop export(generic-args)(export-args)
验证参数是导入和导出参数的一部分。
验证框架本质上是可扩展的,有默认实现。 我们可以扩展接口来定义自定义实现。 可以通过命令行参数传递给Sqoop.
Validator
Validation Threshold
Validation Failure Handler
6. Sqoop验证的示例
在corp数据库中基本导入名为EMPLOYEES的表。 并且验证行数:
例如,
$ sqoop import -connect jdbc:mysql://db.foo.com/corp \ -table employees -validate
用sqoop验证的export 命令,名称为bar的表:
例如,
$ sqoop export -connect jdbc:mysql://db.example.com/foo --table bar \ -export-dir / results / bar_data -validate
使用sqoop验证参数的例子:
例如,
$ sqoop import -connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \ -validate -validator org.apache.sqoop.validation.RowCountValidator \ -validation-threshold \ org.apache.sqoop.validation.AbsoluteValidationThreshold \ -validation-failurehandler \ org.apache.sqoop.validation.AbortOnFailureHandler
Sqoop Validation