Sqoop Validation

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导入或导出通过比较来自源的行计数以及目标数据的行数。

1542533754243038.png

5. Sqoop Validation 语法

$ sqoop import(generic-args)(import-args)
$ sqoop export(generic-args)(export-args)

验证参数是导入和导出参数的一部分。

验证框架本质上是可扩展的,有默认实现。 我们可以扩展接口来定义自定义实现。 可以通过命令行参数传递给Sqoop.

Validator

1542545192142360.png

Validation Threshold

1542546664335902.png

Validation Failure Handler

1542546727792430.png


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

发表评论

邮箱地址不会被公开。 必填项已用*标注

− 二 = 八

滚动到顶部