跳到主要内容

DataOps博客

欢迎改变的地方

解决智能数据管道中的数据质量问题

By 张贴在 工程 2019年3月13日,

Vinu库马尔Vinu库马尔 首席技术官在哪里 HorizonX,总部位于澳大利亚悉尼. Vinu帮助企业统一数据,专注于一个 集中的数据架构. 在这篇客座文章中,从 原来在这里,他解释了如何使用开源工具自动化解决数据质量问题 电子游戏厅数据收集器引擎阿帕奇格里芬和阿帕奇卡夫卡 构建智能数据管道.

桌子上纸张的图形

“数据是新的石油. 它很有价值,但如果不加以改进,就无法真正使用. 它必须变成气体, 塑料, 化学物质, etc to create a valuable entity that drives profitable activity; so must data be broken down, 分析它是否有价值.”
— 克莱夫·亨伯特 英国数学家、建筑师 特易购’s 会员卡)

2006年,克莱夫·亨伯特首次创造了“数据是新石油”这一术语. 的 混乱的数据 企业从这些数据中提取有意义的信息的努力是普遍存在的. 有了电子游戏网址大全处理不了的数据的计算能力, 电子游戏网址大全收到的90%的数据都是非结构化的. 只有0.电子游戏网址大全收到的数据中有5%被分析和使用.

数据质量问题 在数据世界中形成一个关键的挑战. 由于数据质量问题,从多个来源获取的非结构化数据通常会导致获得见解甚至简单分析的延迟.

什么是数据质素?

  • 它在多大程度上满足了数据消费者的期望
  • 它将如何适应数据质量维度,如准确性, 完整性, 一致性, 及时性, 可用性, 以及使用的适应性

大多数企业都建立了数据质量框架,定义数据质量能力,并将其作为一个过程强制执行. 数据质量框架将使数据所有者受益, 数据架构师, 业务分析师和数据科学家.

想象一个由中小型企业运行的流程,以整合要发送给监管机构的报告, 但由于在数据输入阶段引入了数据错误, 数字不匹配. 然后,他们必须得到其他团队的帮助,以修复数据质量问题,然后才能重新运行报告.

如下图所示:

解决数据质量-手工跟踪
图1. 数据质量跟踪-手册

 

由于所涉及的手工流程的性质,往往是企业的 数据质量的策略 创建. 有明确的指导方针, 但是没有一个自动化的框架, 这将是昂贵的,更重要的是耗时, 更不用说人为错误造成的错误了.

的 电子游戏厅 DataOps平台 帮助你 建立和操作数据管道. 开发人员用最少的代码设计管道,操作人员得到高可靠性, 端到端生活指标, 基于sla的性能和流内数据保护.

电子游戏厅数据收集器引擎 开放源码软件是否可以让您轻松地进行连续的构建 数据摄取管道 有以下好处:

  • 设计和执行对数据漂移有弹性的数据管道,无需手工编码.
  • 在整个管道中逐步对异常值和异常进行早期预警和可操作的检测.
  • 丰富的流内数据清理和准备功能,以确保及时交付可供消费的数据
  • 与源系统和目标系统的大量内置集成

Apache Griffin是一个数据质量应用程序,旨在解决电子游戏网址大全在大规模数据质量方面发现的问题. Griffin是一个用于在分布式数据系统环境中验证数据质量的开源解决方案, 比如Hadoop, 火花, 和风暴. 它创建了一个统一的流程来定义, 测量, 并报告这些系统中数据资产的质量. 你可以看到 格里芬的源代码 GitHub上.

从这里开始,电子游戏网址大全将讨论一个用于解决数据质量问题的示例架构 电子游戏厅数据收集器引擎、卡夫卡、火花、Griffin和Elastic搜索

解决火花集群运行Apache Griffen时|自动检查的数据质量问题
图2:使用电子游戏厅解决数据质量的自动化

 

以下是主要组成部分:

  1. 电子游戏厅数据收集器- 从多个数据源摄取数据 并发布给一个卡夫卡生产者
  2. 在spark中运行的Apache Griffin会收集质量指标并将其发布到Elastic搜索中. 这个过程可以被扩展,当质量检查失败或不满足阈值时,当规则以JSON的形式嵌入到火花集群时,可以给某人发邮件. Griffin支持数据分析、准确性和异常检测.
  3. 卡夫卡是一个中介代理层 流过程. 其他对原始数据感兴趣的消费者也可以利用这个主题

这只是解决方案的一部分. 端到端自动化将涉及解决流中的数据质量问题,并发布到不同的卡夫卡主题. 然后这些数据会被传输到数据仓库, 数据湖 或许多其他消费者,以便进行下一步的数据验证.

对于这个原型,电子游戏网址大全使用streamset & 卡夫卡(带动物园管理员)在GKE(谷歌Cloud Kubernetes Engine)集群中.

在GKE中设置streamset和卡夫卡

使用。设置电子游戏厅 persistentVolume 以便在创建新的pod时不会丢失库和管道.

要使用一个persistentVolume,只需创建一个 persistentVolumeClaim

例子:

apiVersion: v1
:PersistentVolumeClaim
元数据:
  名称:ss-data
规范:
  accessModes:
    ——ReadWriteOnce
  资源:
    请求:
      存储:10胃肠道

把它作为一个体积加起来.

卷:
  名称:数据
      persistentVolumeClaim:
        claimName: ss-data
        只读的:假

电子游戏网址大全还将在持久卷中设置外部库.

卡夫卡 & 动物园管理员 设置使用 StatefulSets.

因为电子游戏网址大全需要streamset来发布, 电子游戏网址大全必须在Kubernetes中创建一个负载均衡器服务,并使用外部广告侦听器来更新卡夫卡侦听器.

电子游戏网址大全将共享一个 另外一篇关于Kubernetes如何设置所有东西的博文.

GCP到卡夫卡的生产者管道

图3:电子游戏厅数据收集器引擎

 

卡夫卡的消费者
图4:卡夫卡的消费者

 

一旦一切都启动并运行,电子游戏网址大全创建一个 流数据管道 读取JSON文件从谷歌云存储和发布到卡夫卡.

一旦管道启动,电子游戏网址大全可以快速跳转到卡夫卡节点并测试消费者!

在火花集群上运行Apache Griffin Data Quality App

下一步是建立一个火花集群来运行Griffin数据质量应用程序.

以下是该场景的简介:

Hive数据存储包含客户的国家信息. A 卡夫卡流 附带与公司详细信息相关联的客户数据. Griffin应用程序检查Kakfa流的id是否与Hive的id相匹配. 任何异常都会在Elasticsearch中报告并在Kibana中显示.

步骤1 -准备配置文件:

格里芬env文件:

{
  "火花":{
    “日志.”:“警告”,
    “检查站.格里芬dir”:“hdfs: / / / /检查站”,
    “批.间隔”:“二十多岁”,
    ”的过程.间隔”:“1 m”,
    “初始化.明确”:没错,
    "配置":{
      “火花.默认的.并行性”:4
      “火花.任务.马克斯Failures”:5
      “火花.流媒体.kafkaMaxRatePerPartition”:1000年,
      “火花.流媒体.concurrentJobs”:4
      “火花.纱.马克斯AppAttempts”:5
      “火花.纱.am.attemptFailuresValidityInterval”:“1 h”,
      “火花.纱.马克斯.遗嘱执行人.失败”:120年,
      “火花.纱.遗嘱执行人.failuresValidityInterval”:“1 h”,
      “火花.hadoop.fs.hdfs.impl.禁用.缓存”:真
    }
  },
  “下沉”:(
    {
      “类型”:“控制台”
    },
    {
      “类型”:“hdfs”,
      "配置":{
        “路径”:“格里芬hdfs: / / / /保存”
      }
    },
    {
      “类型”:“elasticsearch”,
      "配置":{
        “方法”:“文章”,
        “api”:“http://: 9200 /格里芬/准确性”
      }
    }
  ],
  “格里芬.检查点”:(
    {
      “类型”:“zk”,
      "配置":{
        “主机”:“2181”,
        “名称”:“格里芬/ infocache”,
        “锁.路径”:“锁”,
        “模式”:“坚持”,
        “初始化.明确”:没错,
        “关闭.明确”:假
      }
    }
  ]
}

设置数据质量配置:

{
  “名称”:“customer_data_accu”,
  ”的过程.类型”:“流”,
  “数据.来源:【
    {
      “名称”:“src”,
      “基线”:没错,
      “连接器”:(
        {
          “类型”:“卡夫卡”,
          “版本”:“1.0",
          "配置":{
            “卡夫卡.配置":{
              “引导.服务器”:“9092”,
              ”组.id”:“格里芬”,
              “自动.抵消.重置”:“最大”,
              “自动.提交.启用”:“错误的”
            },
            “主题”:“源”,
            “关键.”:“java类型.朗.字符串”,
            “价值.”:“java类型.朗.字符串"
          },
          “前.proc”:(
            {
              “dsl.类型”:“df-opr”,
              “规则”:“从_json”
            }
          ]
        }
      ],
      "关卡":{
        “类型”:“json”,
        ”文件.格里芬路径”:“hdfs: / / / /流/转储/源”,
        “信息.路径”:“源”,
        “准备好了.time.间隔”:“10”,
        “准备好了.time.延迟”:“0”,
        “时间.范围”:[
          "-5m",
          "0"
        ],
        “可更新”:真的
      }
    },
    {
      “名称”:“tgt”,
      “连接器”:(
        {
          “类型”:“蜂巢”,
          “版本”:“2.1",
          "配置":{
            “数据库”:“默认”,
            ”表.名称”:“customers_country”
          }
        }
      ],
      "关卡":{
        “类型”:“json”,
        ”文件.格里芬路径”:“hdfs: / / / /流/转储/目标”,
        “信息.路径”:“目标”,
        “准备好了.time.间隔”:“10”,
        “准备好了.time.延迟”:“0”,
        “时间.范围”:[
          "-1m",
          "0"
        ]
      }
    }
  ],
  “评估.规则":{
    “规则”:[
      {
        “dsl.类型”:“格里芬-dsl”,
        "dq.类型”:“准确性”,
        ”.dataframe.名称”:“所以”,
        “规则”:“src.id = tgt.id和src.第一次= tgt.第一次和src.去年= tgt.最后一次”,
        "详细信息":{
          “源”:“src”,
          “目标”:“tgt”,
          “小姐”:“miss_count”,
          “总”:“total_count”,
          “匹配”:“matched_count”
        },
        “出去”:(
          {
            “类型”:“指标”,
            “名称”:“所以”
          },
          {
            “类型”:“记录”,
            “名称”:“missRecords”
          }
        ]
      }
    ]
  },
  “下沉”:(
    “控制台”,
    “HDFS”,
    “ELASTICSEARCH”
  ]
}

上面的配置将卡夫卡流设置为源流,并将Hive流作为目的流进行比较. 这是规则:

“规则”:“src.id = tgt.id和src.第一次= tgt.第一次和src.去年= tgt.最后一次”

这条规则使用 精度 作为数据质量的衡量标准. Griffin也支持侧写, 电子游戏网址大全将在哪里以流或批处理的方式分析传入的数据,以确保它符合所需的标准.

"dq.类型”:“准确性”

manage-smart-data-pipelines

电子游戏厅使数据工程师能够构建端到端智能数据管道. 把你的时间花在构建、实现和创新上,而不是维护、重写和修复.

步骤2 -在谷歌Cloud Data Proc中安装火花 Cluster

解决数据质量|在谷歌Cloud Data Proc中设置火花 Cluster
图5:Dataproc集群

 

选择电火花2.2(从镜像中),选择CPU/内存配置,workers数量并启动集群

复制 env.jsondq.json 进入集群的主节点.

下载Apache Griffin源码 http://archive.apache.org/dist/griffin/0.4.0/griffin-0.4.0-source-release.zip,构建并复制测量-0.4.0.Jar到主节点.

SSH到主节点并设置一个hive表供参考.

创建外部表
  “id”字符串,
  “电子邮件”字符串,
  “第一次”的字符串,
  “去年”字符串,
  “国家”的字符串,
  “created_at”字符串)
行格式分隔
  以'|'结尾的字段
位置
  “格里芬hdfs: / / / /数据/客户/ customers_country ';

将引用数据导入表中:

加载数据本地INPATH 'customers_country.csv' INTO TABLE customers_country;

步骤3 -设置火花 Job

通过Dataproc Job创建Job
图6:通过Dataproc Job创建火花 Job

 

选择新创建的集群,提供主应用程序名称i.e org.apache.格里芬.测量.应用程序.

将配置文件作为参数提供,从env文件开始.

添加测量jar文件路径并创建作业. 这是一个流作业,该作业将运行,并不断地寻找卡夫卡流

9/02/19 05:39:45 INFO org.spark_project.码头.跑龙套.log:日志初始化@5135ms
19/02/19 05:39:45 INFO org.spark_project.码头.服务器.服务器:码头-9.3.z-SNAPSHOT
19/02/19 05:39:45 INFO org.spark_project.码头.服务器.服务器:启动@5239ms
19/02/19 05:39:45 INFO org.spark_project.码头.服务器.Abstract连接or:开始Server连接or@5371d1e7 {HTTP / 1.1, (http / 1.1]}{0.0.0.0:4040}
19/02/19 05:39:45 INFO org.apache.hadoop.纱.客户端.RMProxy:连接到ResourceManager在cluster-格里芬-m/10.152.0.20:8032
19/02/19 05:39:49 INFO org.apache.hadoop.纱.客户端.api.impl.提交的申请application_1550554583894_0001

现在,将一个JSON文件上传到谷歌云存储中,它将被电子游戏厅接收. 文件的每一行都包含JSON字符串,因此每条消息都是一个JSON字符串. 然后Griffin应用程序使用流并根据规则检查任何数据质量问题.

下面是两个记录之间姓氏不匹配的数据示例:

卡夫卡:

{
  "id": 183,
  “电子邮件”:“verdie12@hotmail.com”,
  “第一”:“安吉丽娜”,
  “去年”:“Stiedemannaaa”,
  “公司”:“Wunsch 和 Sons”,
  “created_at”:“2014 - 12 - 13 - t09:16:07.580Z"
}

在蜂巢:

183年,verdie12@hotmail.com,安吉丽娜,Stiedemann 2014 - 12 - 13 - t09:16:07.580 z,萨摩亚

Griffin将其记录为不准确,并将结果发布到Elastic搜索.

Elastic搜索显示来自Apache Griffin的高质量统计数据
图7:Elastic搜索显示来自Apache Griffin的高质量统计数据

 

这只是一种测量的例子. 根据业务需要,可以添加或细化各种规则. 可以对平台进行进一步的定制,甚至可以修复数据质量,也可以将清理规则应用于原始数据 数据摄取管道 在电子游戏厅数据收集器.

总之, 电子游戏网址大全已经了解到,通过构建和自动化一个健壮的数据质量框架,电子游戏网址大全可以预测和解决数据质量问题和下游影响!

使用电子游戏厅解决数据质量问题
图8:启用DataOps的平台

 

您是否同意解决数据质量问题是您数据驱动之旅的关键问题之一?

电子游戏网址大全相信提供高质量、更快、更便宜的数据平台. 让电子游戏网址大全知道,电子游戏网址大全一起可以让你成为一个更好的数据驱动组织. 想要开始 构建智能数据管道 今天?

关于HorizonX

电子游戏网址大全是一个充满激情的团队, 专家和客户至上的从业者, 专注于为客户的利益进行创新和发明. 电子游戏网址大全遵循精益和敏捷方法的结合,以及透明的方法来为电子游戏网址大全的客户提供真正的价值. 电子游戏网址大全是您业务的技术合作伙伴,是您数字团队的延伸. 今天跟电子游戏网址大全谈谈你的数字和数据之旅吧.

http://horizonx.com.au | info@horizonx.com.au

标题图片由 卢卡斯 从 Pexels.

回到顶部

电子游戏网址大全使用cookie来改善您对电子游戏网址大全网站的体验. 单击“允许所有人同意”并继续访问电子游戏网址大全的网站. 隐私政策