数据治理组件-apache-griffin

griffin介绍

Apache Griffin提供了一套定义明确的数据质量领域模型,涵盖了大多数通用的数据质量问题。它还定义了一套数据质量DSL,帮助用户定义其质量标准。它提供了从不同角度衡量数据质量的统一流程,帮助您构建可信赖的数据资产,从而提升您对业务的信心。
优势 :基于spark计算引擎,能对接几乎市面上所有的数据库。在不占用数据库的资源情况下,完成稽核任务,并输出稽核报告。

griffin框架

在这里插入图片描述

  • Data Quality Definitions
    数据质量定义板块,涉及到的维度,
    1. 准确性
    2. 完整性
    3. 及时性
    4. 唯一性
    5. 有效性
    6. 一致性
  • Scheduler
    基于spark计算引擎 ,启动任务稽核任务。

griffin数据流转情况

  1. 定义数据质量
  2. 计算数据质量
  3. 得到数据稽核结果

使用例子
a. 定义环境配置文件
指定spark计算引擎的参数,稽核结果的写入位置(打印屏幕,写入到hdfs,写入到es)

{
  "spark": {
    "log.level": "WARN"
  },
  "sinks": [
    {
      "type": "console"
    },
    {
      "type": "hdfs",
      "config": {
        "path": "hdfs:///griffin/persist"
      }
    },
    {
      "type": "elasticsearch",
      "config": {
        "method": "post",
        "api": "http://es:9200/griffin/accuracy"
      }
    }
  ]
}

b. 定义稽核规则
指定数据源的连接信息,包含数据源的名称,然后配置准确性的规则,得到稽核结果。

{
  "name": "accu_batch",
  "process.type": "batch",
  "data.sources": [
    {
      "name": "source",
      "baseline": true,
      "connector": {
        "type": "jdbc",
        "config": {
          "user": "xxx",
          "password": "xxx",
          "tablename":  "stu",
          "where": "id < 3",
          "url":"jdbc:mysql://localhost:3306/test",
          "database": "test",
          "driver": "com.mysql.jdbc.Driver"
        }
      }
    },
    {
      "name": "target",
      "connector": {
        "type": "jdbc",
        "config": {
          "user": "xxx",
          "password": "xxx",
          "tablename":  "stu2",
          "where": "id < 3",
          "url":"jdbc:mysql://localhost:3306/test",
          "database": "test",
          "driver": "com.mysql.jdbc.Driver"
        }
      }
    }
  ],
  "evaluate.rule": {
    "rules": [
      {
        "dsl.type": "griffin-dsl",
        "dq.type": "accuracy",
        "out.dataframe.name": "accu",
        "rule": "source.id = target.id AND upper(source.name) = upper(target.name) ",
        "details": {
          "source": "source",
          "target": "target",
          "miss": "miss_count",
          "total": "total_count",
          "matched": "matched_count"
        },
        "out": [
          {
            "type": "record",
            "name": "missRecords"
          }
        ]
      }
    ]
  },
  "sinks": [
    "consoleSink"
  ]
}

griffin代码解读

在这里插入图片描述

  • DataSource如何产生
    在这里插入图片描述
  "data.sources": [
    {
      "name": "source",
      "baseline": true,
      "connector": {
        "type": "jdbc",
        "config": {
          "user": "xxx",
          "password": "xxx",
          "tablename":  "stu",
          "where": "id < 3",
          "url":"jdbc:mysql://localhost:3306/test",
          "database": "test",
          "driver": "com.mysql.jdbc.Driver"
        }
      }
    }]

// 在BatchDqApp 类的run方法,加载datasources
val dataSources =DataSourceFactory.getDataSources(sparkSession, null, dqParam.getDataSources)

在这里插入图片描述
下面是获取DataConnector的方法
在这里插入图片描述
以下是hive的DataConnector如何实现的在这里插入图片描述
那么它在BatchDQApp中是如何调用的呢
在这里插入图片描述
在这里插入图片描述

  • job构建
  "evaluate.rule": {
    "rules": [
      {
        "dsl.type": "griffin-dsl",
        "dq.type": "completeness",
        "out.dataframe.name": "comp",
        "rule": "email, post_code, first_name",
        "out": [
          {
            "type": "metric",
            "name": "comp"
          }
        ]
      }
    ]
  }

在这里插入图片描述
发现代码是三类DQStep的构建
在这里插入图片描述

  1. datasource的DQStep

在这里插入图片描述
在这里插入图片描述
datasource 不做任何处理
2. rule的DQStep
在这里插入图片描述
看看SparkSqlDQStepBuilder的实现
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
RecordWriteStep
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. MetricFlushStep的DQStep

在这里插入图片描述
可以看到以下为consoleSink的输出
在这里插入图片描述

应用

基于griffin组件,结合稽核规则,我们能有效的保证数据质量,提升数据的可用性。
目前,公司的数据流程,对稽核主要分为阻断稽核、非阻断稽核。

  • 阻断稽核
    主要基于业务规则提前预判,避免脏数据污染生产,导致生产不可用。比如基于业务常识,数据完整性不具备(31省数据不具备)。则不使用最新账期数据。
  • 非阻断稽核
    主要在无明显业务规则时,针对公司核心的指标数据,波动性超过30%(默认值),告警。需要数据人员基于告警信息,去排查是否有数据异常情况。

衍生产品

griffin的特性,可以加载各类数据库。针对这个特性,可以孵化一个跨库执行的产品。

  • 快速产生分析报表
    无需同步多源数据到数仓,再加工,再同步到生产库。
  • 跨库传输
    基于简单sql就能实现数据同步。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值