如何识别 Sqoop 故障并进行处理?

How to identify Sqoop failures and handle them?

我正在使用 sqoop 将数据从 hive table 导出到 SQLServer table,但有时所有记录都不会导出。

我不确定如何在没有人工干预的情况下识别此故障。我计划通过编写一个 shell 脚本来解决这个问题 -

1) 将配置单元table 的计数存储在一个变量中。 2) 将 SQL 服务器 table 的计数存储在另一个变量中。 3)比较两个变量的值,

    if var1 != var 2 
    { 
       Delete the rows in SQL Server Server;
        Rerun my sqoop script
    }
    else
       exit;

问题: 用我目前的方法, 如何将配置单元 table 的行数存储在 shell 脚本的变量中? 如何在 shell 脚本中的 SQL-Server-Management studio 中存储 table 的行数?

Sqoop 提供了一个 开箱即用的 验证工具来确保 import/export 执行的正确性。您可以使用以下标志执行此操作:

--validate

请参阅 https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#validation,其中详细介绍了所有 3 个验证接口。

据此,

Validator - Drives the validation logic by delegating the decision to ValidationThreshold and delegating failure handling to ValidationFailureHandler. The default implementation is RowCountValidator which validates the row counts from source and the target.

您可以通过如下实现自己的验证器来进一步对验证输出执行操作:

The validation framework is extensible and pluggable. It comes with default implementations but the interfaces can be extended to allow custom implementations by passing them as part of the command line arguments as described below.

基本上,您是在将数据从配置单元导出到 sqlserver 后尝试进行协调。要从 sqlserver 获取计数,您可以编写 java/scala jdbc 程序。

下面是伪代码

hiveCount = `hive -e "select count(*) from foo_table"`
sqlServerCount= java/scala jdbcCount.jar