Griffin0.6服务初测--校验准确率

本节目的:

验证Hive中两个表数据的准确率,计算公式如下所示:


数据准备:

在这里http://griffin.apache.org/data/batch/下载到某一个目录,可以参照http://griffin.apache.org/docs/quickstart-cn.html 方式建外部表,
然后手动执行脚本文件,在两个表中生成一些数据,其实也可以不这么麻烦,自己随便insert 几条进去也可以。
 

测试流程:

1、创建measure
以下select schema的位置需要修改部分源码,因为我们使用kerberos认证
 

    @PostConstruct
    public void init() {
        if (needKerberos != null && needKerberos.equalsIgnoreCase("true")) {
            LOGGER.info("Hive need Kerberos Auth.");
            // new add for kerberos auth
            System.setProperty("java.security.krb5.conf", krbFilePath);
            Configuration conf = new Configuration();
            conf.set("hadoop.security.authentication", "Kerberos");
            UserGroupInformation.setConfiguration(conf);
            try {
                UserGroupInformation.loginUserFromKeytab(keytabUser, keytabPath);
            } catch (IOException e) {
                LOGGER.error("Register Kerberos has error. {}", e.getMessage());
            }
        }
    }


....


    @Override
    @Cacheable(unless = "#result==null")
    public Table getTable(String dbName, String tableName) {
        Table result = new Table();
        result.setDbName(dbName);
        result.setTableName(tableName);

        String sql = SHOW_CREATE_TABLE + dbName + "." + tableName;
        Statement stmt = null;
        ResultSet rs = null;
        StringBuilder sb = new StringBuilder();

        try {
            Class.forName(hiveClassName);
            if (conn == null) {
                // new add for conn using username and password
                conn = DriverManager.getConnection(hiveUrl, hiveUserName, hivePassword);
            }
            LOGGER.info("got connection");

 

选择源:

选择目标:

选择表达式:使用id相等来判断准确率

确认结果:注意表达式不要填错了,我们的目标表使带分区的

]

 

2、创建job

然后每10min跑一次,按照小时-1偏移,下面我暂停了,显示PAUSED状态

 

查看首页状态:

到这里,整个流程就通了,绿色的块点进去就是正确率曲线,每个job分了一个块,UI在这里显示不是太友好。

 

注意事项

1、任务提交到livy会生成具体的数据信息存储在HDFS上如下图所示:

hadoop fs -ls hdfs://nameservice1/griffin/persist/job_test_01/1606115946809
Found 3 items
-rw-r--r--   2 zm_app_prd supergroup          0 2020-11-23 16:19 hdfs://nameservice1/griffin/persist/job_test_01/1606115946809/_FINISH
-rw-r--r--   2 zm_app_prd supergroup        179 2020-11-23 16:19 hdfs://nameservice1/griffin/persist/job_test_01/1606115946809/_METRICS
-rw-r--r--   2 zm_app_prd supergroup         30 2020-11-23 16:19 hdfs://nameservice1/griffin/persist/job_test_01/1606115946809/_START



hadoop fs -cat hdfs://nameservice1/griffin/persist/job_test_01/1606115946809/_METRICS
{"name":"job_test_01","tmst":1606115946809,"value":{"total":125000,"miss":0,"matched":125000,"matchedFraction":1.0},"metadata":{"applicationId":"application_1605769182793_1768"}}

 

2、注意on yarn 提交需要在配置文件中配置队列信息,否则无法提交

 

总结

缺点:

1、定义的job无法修改,只能删除重建
2、没有job重跑功能
3、目前貌似只能定义hive表的相关校验 ,如果想校验MySQL到hive的呢?后面代码中已有对应的connector,但是在Ui中无法进行多schema类型选择,目前仅支持hive类型
This step let you choose the single source of truth for data quality comparision with target. Currently you can only select the attributes from one schema

4、用户权限需要自己实现,当前为空。
5、数据资产页未实现,需要依据自身情况实现。
6、measure 和job无编辑功能只能删掉重建,删掉measure则job自动消失。

优点:
1、可以定义基于Hive表数据的count /distinct/null 等的基础性校验、支持json、yaml文件、支持列级别的数据校验
2、每个执行实例都有返回的application id ,便于查错
3、开源,便于自定义实现或者集成到现有系统中
 

 

说明

鉴于本人初步测试、了解的水平有限,如有错误之处,烦请指正!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值