亚马逊AWS官方博客

使用 Amazon Glue Data Quality 创建高质量的 ETL 管道

目前有几十万客户使用数据湖进行分析和机器学习。不过,数据工程师必须先清理和准备这些数据,之后才能使用它们。基础数据必须准确且最新,以便客户自信地做出业务决策。否则,数据使用者将失去对数据的信任,并做出不理想的或错误的决策。评估数据是否准确且最新是数据工程师的一项常见任务。虽然目前提供了多种数据质量工具,但常见的数据质量工具通常需要实施手动流程来监控数据质量。

Amazon Glue Data Quality 自动监测功能是 AWS Glue 的一项预览功能,可用于测量和监控 Amazon Simple Storage Service(Amazon S3)数据湖以及 AWS Glue 提取、转换、加载(ETL)作业中的数据质量。这是一项开放性的预览功能,已在您账户的可用区域中启用。您可以在 AWS Glue Studio 控制台中轻松定义和测量数据质量检查,而无需编写代码。它简化了管理数据质量的体验。

这篇文章是一个文章系列(共 4 篇文章)的第 2 部分,旨在说明 Amazon Glue Data Quality 自动监测功能的工作原理。查看该文章系列的上一篇文章:

Amazon Glue Data Quality 自动监测功能入门

在这篇文章中,我们不仅说明如何创建 AWS Glue 作业来衡量和监控数据管道的数据质量,还将说明如何根据数据质量结果来采取措施。

解决方案概览

让我们考虑一个示例使用案例,其中,数据工程师需要构建数据管道,以便将数据从原始区域提取到数据湖中的精选区域。作为数据工程师,除了负责提取、转换和加载数据之外,您还主要负责验证数据质量。预先识别数据质量问题可帮助您防止将不良数据放置在精选区域内,并避免出现严重的数据损坏事件。

在这篇文章中,您将了解如何在 AWS Glue 作业中轻松设置内置自定义数据验证检查,以防止不良数据损坏下游的高质量数据。

本文中使用的数据集是综合生成的;以下屏幕截图显示了数据示例。

使用 AWS CloudFormation 设置资源

这篇文章包含一个用于快速设置的 AWS CloudFormation 模板。您可以查看并自定义此模板以满足自己的需求。

CloudFormation 模板会生成以下资源:

  • 一个 Amazon Simple Storage Service(Amazon S3)存储桶(gluedataqualitystudio-*)。
  • S3 存储桶中的以下前缀和对象:
    • datalake/raw/customer/customer.csv
    • datalake/curated/customer/
    • scripts/
    • sparkHistoryLogs/
    • temporary/
  • AWS Identity and Access Management(IAM)用户、角色和策略IAM 角色(GluedataQualityStudio-*)有权在 S3 存储桶中进行读取和写入。
  • AWS Lambda 函数以及这些函数创建和删除此堆栈所需的 IAM policy。

要创建您的资源,请完成以下步骤:

  1. us-east-1 区域中登录到 AWS CloudFormation 控制台
  2. 选择 Launch Stack(启动堆栈):
  3. 选择 I acknowledge that AWS CloudFormation might create IAM resources(我确认 AWS CloudFormation 可以创建 IAM 资源)。
  4. 选择 Create stack(创建堆栈)并等待堆栈创建步骤完成。

实施解决方案

要开始配置您的解决方案,请完成以下步骤:

  1. AWS Glue Studio 控制台上,在导航窗格中选择 Jobs(作业)。
  2. 选择 Visual with a blank canvas(带空画布的视觉效果),然后选择 Create(创建)。
  3. 选择 Job Details(作业详细信息)选项卡以配置作业。
  4. 对于 Name(名称),请输入 GlueDataQualityStudio
  5. 对于 IAM Role(IAM 角色),请选择以 GlueDataQualityStudio-* 开头的角色。
  6. 对于 Glue version(Glue 版本),请选择 Glue 3.0
  7. 对于 Job bookmark(作业书签),请选择 Disable(禁用)。这可让您使用相同的输入数据集来多次运行此作业。
  8. 对于 Number of retries(重试次数),请输入 0
  9. Advanced properties(高级属性)部分中,提供由 CloudFormation 模板创建的 S3 存储桶(以 gluedataqualitystudio-* 开头)。
  10. 选择 Save(保存)。
  11. 保存作业后,选择 Visual(可视对象)选项卡,然后在 Source(源)菜单上选择 Amazon S3
  12. Data source properties – S3(数据来源属性 – S3)选项卡上,对于 S3 source type(S3 源类型),选择 S3 location(S3 位置)。
  13. 选择 Browse S3(浏览 S3)并导航到以 gluedataqualitystudio-* 开头的 S3 存储桶中的前缀 /datalake/raw/customer/
  14. 选择 Infer schema(推断架构)。
  15. Action(操作)菜单上,选择 Evaluate Data Quality(评估数据质量)。
  16. 选择 Evaluate Data Quality(评估数据质量)节点。

    Transform(转换)选项卡上,您现在可以开始构建数据质量规则。您创建的第一条规则是使用 isPrimaryKey 规则检查 Customer_ID 是否唯一且不为空。
  17. DQDL rule builder(DQDL 规则生成器)的 Rule types(规则类型)选项卡上,搜索 isprimarykey 并选择加号。
  18. DQDL rule builder(DQDL 规则生成器)的 Schema(架构)选项卡上,选择 Customer_ID 旁边的加号。
  19. 在规则编辑器中,删除 id

    我们添加的下一个规则将检查所有行是否都存在 First_Name 列值。
  20. 您也可以直接在规则编辑器中输入数据质量规则。在第一个规则后面添加逗号(,),然后输入 IsComplete "First_Name",

    接下来,添加一个自定义规则来验证是否不存在不包含 TelephoneEmail 的行。
  21. 在规则编辑器中输入以下自定义规则:
    CustomSql "select count(*) from primary where Telephone is null and Email is null" = 0


    评估数据质量功能提供了根据作业质量结果来管理作业成果的操作。

  22. 在这篇文章中,选择 Fail job when data quality fails(在数据质量未达到要求时使作业失败)和 Fail job without loading target data(在不加载目标数据的情况下使作业失败)操作。在 Data quality output setting(数据质量输出设置)部分中,选择 Browse S3(浏览 S3),并导航到以 gluedataqualitystudio-* 开头的 S3 存储桶中的前缀 dqresults
  23. Target(目标)菜单上,选择 Amazon S3
  24. 选择 Data target – S3 bucket(数据目标 – S3 存储桶)节点。
  25. Data target properties – S3(数据目标属性 – S3)选项卡上,对于 Format(格式),选择 Parquet,对于 Compression Type(压缩类型),选择 Snappy
  26. 对于 S3 Target Location(S3 目标位置),选择 Browse S3(浏览 S3),并导航到以 gluedataqualitystudio-* 开头的 S3 存储桶中的前缀 /datalake/curated/customer/
  27. 选择 Save(保存),然后选择 Run(运行)。
    您可以在 Runs(运行)选项卡上查看作业运行详细信息。在我们的示例中,作业失败并显示错误消息 AssertionError: The job failed due to failing DQ rules for node: <node>(AssertionError:由于未满足节点 <node> 的 DQ 规则,作业失败)。
    您可以在 Data quality(数据质量)选项卡上查看数据质量结果。在我们的示例中,自定义数据质量验证失败,因为数据集中的某个行不具有 TelephoneEmail 值。评估数据质量结果也将基于节点的数据质量结果位置参数以 JSON 格式写入 S3 存储桶。
  28. 导航到以 gluedataqualitystudio-* 开头的 S3 存储桶下的前缀 dqresults。您将看到数据质量结果按日期进行了分区。

以下是 JSON 文件的输出。您可以使用此文件输出来构建自定义数据质量可视化控制面板。

您也可以通过 Amazon CloudWatch 指标监控 Evaluate Data Quality(评估数据质量)节点,并设置警报以发送有关数据质量结果的通知。要了解有关如何设置 CloudWatch 警报的更多信息,请参阅使用 Amazon CloudWatch 警报

清理

为了避免将来产生费用并清理未使用的角色和策略,请删除您创建的资源:

  1. 删除您在这篇文章中创建的 GlueDataQualityStudio 作业。
  2. 在 AWS CloudFormation 控制台上,删除 GlueDataQualityStudio 堆栈。

小结

利用 Amazon Glue Data Quality 自动监测功能,可以轻松测量和监控 ETL 管道数据质量。在这篇文章中,您已了解如何根据数据质量结果来采取必要措施,这有助于您保持较高的数据标准并自信地做出业务决策。

要了解有关 Amazon Glue Data Quality 自动监测功能的更多信息,请查看文档:


关于作者

Deenbandhu Prasad 是 AWS 的一位高级分析专家,专门从事大数据服务。他热衷于帮助客户在 AWS Cloud 上构建现代数据架构。他已帮助各种规模的客户实施数据管理、数据仓库和数据湖解决方案。

Yannis Mentekidis 是 AWS Glue 团队的高级软件开发工程师。