sql server—如何识别并处理sqoop失败?

rmbxnbpk  于 2021-06-03  发布在  Sqoop
关注(0)|答案(2)|浏览(410)

我使用sqoop将数据从配置单元表导出到sqlserver表,但有时不会导出所有记录。
我不知道如何在没有人工干预的情况下识别这个故障。我计划通过编写一个shell脚本来解决这个问题-
1) 将配置单元表的计数存储在变量中。2) 将sql server表的计数存储在另一个变量中。3) 比较两个变量的值,

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

问题:在我目前的方法中,如何在shell脚本的变量中存储配置单元表的行数?如何在shell脚本中存储SQLServerManagementStudio中表的行数?

oxiaedzo

oxiaedzo1#

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

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

vu8f3i0k2#

sqoop提供了一个现成的验证工具来确保执行的导入/导出的正确性。可以使用以下标志执行此操作:

--validate

请参考https://sqoop.apache.org/docs/1.4.6/sqoopuserguide.html#validation 详细说明了所有3个验证接口。
因此,
validator—通过将决策委托给validationthreshold并将失败处理委托给validationfailurehandler来驱动验证逻辑。默认实现是rowcountvalidator,它验证来自源和目标的行计数。
通过实现您自己的验证器,您可以对验证输出采取进一步的操作,如下所示:
验证框架是可扩展和可插入的。它附带了默认实现,但是可以通过如下所述将接口作为命令行参数的一部分传递来扩展接口以允许自定义实现。

相关问题