

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon 中的数据谱系 DataZone
<a name="datazone-data-lineage"></a>

Amazon 中的数据沿袭 DataZone 是一项 OpenLineage兼容功能，可帮助您捕获和可视化世系事件，包括 OpenLineage支持系统的系统或直至追踪数据来源 APIs、跟踪转换和查看跨组织的数据消耗情况。它为您提供了数据资产的总体视图，以便查看资产的来源及其连接链。世系数据包括有关亚马逊 DataZone业务数据目录内活动的信息，包括有关编目资产、这些资产的订阅者以及使用以编程方式捕获的业务数据目录之外发生的活动的信息。 APIs

**Topics**
+ [Amazon 中的血统节点类型 DataZone](#datazone-data-lineage-node-types)
+ [世系节点中的关键属性](#datazone-data-lineage-key-attributes)
+ [可视化数据世系](#datazone-data-lineage-history)
+ [Amazon 中的数据沿袭授权 DataZone](#datazone-data-lineage-authorization)
+ [Amazon 中的数据沿袭示例体验 DataZone](#datazone-data-lineage-sample-experience)
+ [在管理控制台中启用数据血统](#enable-data-lineage)
+ [以编程方式使用 Amazon DataZone 数据谱系](#datazone-data-lineage-apis)
+ [自动创建 AWS Glue 目录的血统](#datazone-data-lineage-automate)
+ [从 Amazon Redshift 实现血统自动化](#datazone-data-lineage-automate-redshift)

可以将血统设置为在添加到亚马逊后自动从 AWS Glue 和 Amazon Redshift 数据库中捕获。 DataZone此外，可以将在 AWS Glue（v5.0 及更高版本）控制台中运行的 Spark ETL 作业配置为向亚马逊域发送血统事件。 DataZone

在 Amazon 中 DataZone，域管理员可以在设置数据湖和数据仓库内置蓝图的同时配置世系，从而确保使用这些资源创建的所有数据源运行都启用自动世系捕获。

使用与亚马逊 OpenLineage兼容 DataZone的功能 APIs，域管理员和数据制作者可以捕获和存储超出亚马逊可用范围的世系事件 DataZone，包括Amazon S3、G AWS lue和其他服务中的转换。这为数据使用者提供了全面视图，帮助他们自信地了解资产来源，同时数据创建者可以通过了解资产的使用情况来评估资产更改产生的影响。此外，Amazon DataZone 版本与每个事件保持一致，使用户能够在任何时间点可视化血统或比较资产或任务历史的转换。此历史世系可让用户更深入地了解数据的演变过程，这对于故障排除、审计和确保数据资产的完整性至关重要。

通过数据沿袭，您可以在 Amazon DataZone 中完成以下任务：
+ 了解数据的来源：了解数据源自何处可让您清楚地了解数据的源、依赖关系和转换，从而增强对数据的信任。此透明度有助于自信地做出数据驱动型决策。
+ 了解数据管道更改产生的影响：在对数据管道进行更改时，可以使用世系功能来标识所有将受影响的下游使用者。这有助于确保在不中断关键数据流的情况下进行更改。
+ 确定数据质量问题的根本原因：如果在下游报告中检测到数据质量问题，则可以使用世系（尤其是列级世系）来追溯数据（在列级别），以将问题追溯到其源。这可帮助数据工程师识别和修复问题。
+ 改善数据治理和合规性：可使用列级世系来演示对数据治理和隐私法规的遵从性。例如，可使用列级世系来显示敏感数据（例如 PII）的存储位置以及下游活动中处理敏感数据的方式。

## Amazon 中的血统节点类型 DataZone
<a name="datazone-data-lineage-node-types"></a>

在 Amazon 中 DataZone，数据谱系信息显示在代表表和视图的节点中。根据项目（例如，在数据门户左上角选择的项目）的上下文，创建者可以同时查看库存资产和已发布的资产，而使用者只能查看已发布的资产。首次在资产详细信息页面中打开世系选项卡时，已编目的数据集节点是通过世系图的世系节点向上游或下游导航的起点。

以下是 Amazon DataZone 支持的数据血统节点类型：
+ **数据集节点** – 此节点类型包括有关特定数据资产的数据世系信息。
  + 包含亚马逊 DataZone 目录中发布的 AWS Glue 或 Amazon Redshift 资产相关信息的数据集节点是自动生成的，节点中包含相应的 G AWS lue 或 Amazon Redshift 图标。
  + 包含未在 Amazon DataZone 目录中发布的资产信息的数据集节点由域管理员（制作者）手动创建，并由节点内的默认自定义资产图标表示。
+ **作业（运行）节点** – 此节点类型显示作业的详细信息，包括特定作业的最新运行和运行详细信息。此节点还捕获作业的多次运行，并且可在节点详细信息的**历史记录**选项卡中查看。您可以通过选择节点图标来查看节点详细信息。

## 世系节点中的关键属性
<a name="datazone-data-lineage-key-attributes"></a>

世系节点中的 `sourceIdentifier` 属性表示数据集上发生的事件。世系节点的 `sourceIdentifier` 是数据集的标识符（表/视图等）。它用于在世系节点上强制实施唯一性。例如，不能有两个具有同一 `sourceIdentifier` 的世系节点。以下是不同类型的节点的 `sourceIdentifier` 值的示例：
+ 对于具有相应数据集类型的数据集节点：
  + 资产：amazon.datazone.asset/<assetId>
  + 清单（已发布的资产）：amazon.datazone.listing/<listingId>
  + AWS <region><account-id><database>Glue table：arn: aws: glue:: table//<table-name> 
  + Amazon Redshift 表/视图：arn:aws:<redshift/redshift-serverless>:<region>:<account-id>:<table-type(table/view etc)>/<clusterIdentifier/workgroupName>/<database>/<schema>/<table-name> 
  + 对于使用 open-lineage 运行事件导入的任何其他类型的数据集节点，将输入/输出数据集的 <namespace>/<name> 用作节点的 `sourceIdentifier`。
+ 对于作业：
  + 对于使用 open-lineage 运行事件导入的作业节点，将 <jobs\_namespace>.<job\_name> 用作 sourceIdentifier。
+ 对于作业运行：
  + 对于使用 open-lineage 运行事件导入的作业运行节点，将 <jobs\_namespace>.<job\_name>/<run\_id> 用作 sourceIdentifier。

对于使用 `createAsset` API 创建的资产，必须使用 `createAssetRevision` API 更新 `sourceIdentifier` 以便能够将资产映射到上游资源。

## 可视化数据世系
<a name="datazone-data-lineage-history"></a>

Amazon DataZone 的资产详情页面以图形方式呈现数据谱系，便于直观呈现上游或下游的数据关系。资产详细信息页面提供以下功能来浏览图表：
+ 列级世系：如果列级世系在数据集节点中可用，则扩展列级世系。如果源列信息可用，这将自动显示与上游或下游数据集节点的关系。
+ 列搜索：当列数的默认显示为 10 时。如果超过 10 个列，则将激活分页以导航到其余列。要快速查看特定列，可以在仅列出已搜索列的数据集节点上进行搜索。
+ 仅查看数据集节点：如果要切换为仅查看数据集世系节点并筛选出作业节点，您可以选择图表查看器左上角的“打开视图控件”图标，然后切换**仅显示数据集节点**选项。这将从图表中删除所有作业节点，并让您仅浏览数据集节点。请注意，在启用“仅查看数据集节点”时，图表无法向上游或下游展开。
+ 详细信息窗格：每个世系节点都具有捕获到的详细信息，并且会在选中时显示。
  + 数据集节点具有一个详细信息窗格，其中显示针对给定时间戳为该节点捕获的所有详细信息。每个数据集节点具有 3 个选项卡，即：“世系信息”、“架构”和“历史记录”选项卡。“历史记录”选项卡列出为该节点捕获的世系事件的不同版本。从 API 捕获的所有详细信息都使用元数据表单或 JSON 查看器显示。
  + 作业节点具有一个详细信息窗格，其中显示作业详细信息与“作业信息”和“历史记录”选项卡。详细信息窗格还捕获在作业运行过程中捕获到的查询或表达式。“历史记录”选项卡列出为该节点捕获的作业运行的不同版本。从 API 捕获的所有详细信息都使用元数据表单或 JSON 查看器显示。
+ 版本选项卡：Amazon DataZone 数据谱系中的所有世系节点都有版本控制。对于每个数据集节点或作业节点，版本都将作为历史记录捕获，这使您能够在各个版本之间导航以确定随时间推移发生的变化。每个版本都会在世系页面中打开一个新的选项卡以帮助进行比较。

## Amazon 中的数据沿袭授权 DataZone
<a name="datazone-data-lineage-authorization"></a>

**写入权限**-要将世系数据发布到 Amazon DataZone，您必须拥有一个 IAM 角色，其权限策略包括对 `PostLineageEvent` API 的`ALLOW`操作。此 IAM 授权在 API Gateway 层进行。

**读取权限**-有两个操作：`GetLineageNode`和`ListLineageNodeHistory`包含在`AmazonDataZoneDomainExecutionRolePolicy`托管策略中，因此 Amazon DataZone 域中的每个用户都可以调用这些操作来遍历数据谱系图。

## Amazon 中的数据沿袭示例体验 DataZone
<a name="datazone-data-lineage-sample-experience"></a>

您可以使用数据沿袭示例体验来浏览和了解 Amazon 中的数据谱系 DataZone，包括在数据谱系图中遍历上游或下游、探索版本和列级谱系。

完成以下步骤，在 Amazon 中试用示例数据谱系体验： DataZone

1. 导航至 Amazon DataZone 数据门户 URL，然后使用单点登录 (SSO) 或凭证登录 AWS 。如果您是亚马逊 DataZone管理员，则可以通过 [https://console.aws.amazon.com/datazon](https://console.aws.amazon.com/datazone) e 导航到亚马逊 DataZone 控制台，使用域名创建 AWS 账户 地登录，然后选择**打开**数据门户。

1. 选择任何可用的数据资产以打开资产的详细信息页面。

1. 在资产的详细信息页面上，选择**血统**选项卡，将鼠标悬停在信息图标上，然后选择**尝试示例血统**。

1. 在数据世系弹出窗口中，选择**开始引导式数据世系旅程**。

   此时，将显示一个全屏选项卡，其中提供了世系信息的所有空间。示例数据世系图表最初在上游和下游两端显示一个深度为 1 的基本节点。您可以将图表扩展到上游或下游。您也可以选择列信息，并查看世系如何流经节点。

## 在管理控制台中启用数据血统
<a name="enable-data-lineage"></a>

您可以在配置默认数据湖和默认数据仓库蓝图的过程中启用数据血统。

完成以下过程为默认数据湖蓝图启用数据血统。

1. 前往位于 [https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone) 的亚马逊 DataZone 控制台，然后使用您的账户凭证登录。

1. 选择 “**查看域**”，然后选择要为 DefaultDataLake 蓝图启用数据沿袭的域。

1. 在域详细信息页面上，导航到**蓝图**选项卡。

1. 在 DefaultDataLake 蓝图的详细信息页面上，选择**区域**选项卡。

1. 在为 DefaultDataLake 蓝图添加区域的过程中，您可以启用数据沿袭。因此，如果已经添加了一个区域，但其中的数据血统功能未启用（**导入数据血统**列中显示了**否**），则必须先删除该区域。要启用数据血统，请选择**添加区域**，然后选择要添加的区域，并确保在**添加区域**弹出窗口中选中**启用导入数据血统**复选框。

要为 DefaultDataWarehouse 蓝图启用数据沿袭，请完成以下步骤。

1. 前往位于 [https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone) 的亚马逊 DataZone 控制台，然后使用您的账户凭证登录。

1. 选择 “**查看域**”，然后选择要为 DefaultDataWarehouse 蓝图启用数据沿袭的域。

1. 在域详细信息页面上，导航到**蓝图**选项卡。

1. 在 DefaultDataWarehouse 蓝图的详细信息页面上，选择**参数集**选项卡。

1. 在为 DefaultDataWarehouse 蓝图添加参数集的过程中，您可以启用数据沿袭。为此，请选择**创建参数集**。

1. 在**创建参数集**页面上，指定以下内容，然后选择**创建参数集**。
   + 参数集的名称。
   + 参数集的描述。
   + AWS 您要在其中创建环境的区域。
   + 指定亚马逊 DataZone 是使用这些参数来建立与您的 Amazon Redshift 集群还是无服务器工作组的连接。
   + 指定密 AWS 钥。
   + 指定要在创建环境时使用的集群或无服务器工作组。
   + 指定要在创建环境时使用的数据库（在指定的集群或工作组中）的名称。
   + 在**导入数据血统**下，选中**启用导入数据血统**。

## 以编程方式使用 Amazon DataZone 数据谱系
<a name="datazone-data-lineage-apis"></a>

要在 Amazon 中使用数据血统功能 DataZone，您可以调用以下命令： APIs
+ [GetLineageNode](https://docs.aws.amazon.com/datazone/latest/APIReference/API_GetLineageNode.html)
+ [ListLineageNodeHistory](https://docs.aws.amazon.com/datazone/latest/APIReference/API_ListLineageNodeHistory.html)
+ [PostLineageEvent](https://docs.aws.amazon.com/datazone/latest/APIReference/API_PostLineageEvent.html)

## 自动创建 AWS Glue 目录的血统
<a name="datazone-data-lineage-automate"></a>

当 AWS Glue 数据库和表被添加到 Amazon DataZone 目录时，将使用数据源运行自动提取这些表的世系。对于此来源，有几种方法可以实现血统自动化：
+ 蓝图配置 – 设置蓝图的管理员可以将蓝图配置为自动捕获血统。通过此配置，管理员能够定义血统捕获的关键数据来源，而不需要依赖数据生成者对数据进行编目。有关更多信息，请参阅 [在管理控制台中启用数据血统](#enable-data-lineage)。
+ 数据源配置-数据生成者在为 AWS Glue 数据库配置数据源运行时，会看到一个视图以及数据质量，用于告知该数据源的自动数据沿袭。
  + 血统设置可以在**数据来源定义**选项卡中查看。数据生成者无法编辑此值。
  + Data Source 运行中的世系集合从表元数据中获取信息以建立世系。 AWS Glue crawler 支持不同类型的来源，在数据源运行中捕获血统的来源包括 Amazon S3、DynamoDB、Catalog、Delta Lake、Iceberg 表和存储在 Amazon S3 中的 Hudi 表。目前不支持 JDBC 和 DocumentDB 或 MongoDB 作为来源。
  + 限制 – 如果表的数量大于 100 个，血统运行将在 100 个表之后失败。确保 Gl AWS ue 爬网程序未配置为在一次运行中引入超过 100 张表。
+ AWS Glue (v5.0) 配置——在 AWS Glue Studio 中运行 AWS Glue 作业时，可以为任务配置数据沿袭，将世系事件直接发送到亚马逊网域。 DataZone 

  1. 导航到 https://console.aws.amazon.com /g AWS luestudio 上的 Glue 控制台，然后使用你的账户凭据登录。

  1. 选择 **ETL 作业**，然后创建新作业或单击任何现有作业。

  1. 转到**作业详细信息**（包括 ETL 流程作业）选项卡，然后向下滚动到“生成血统事件”部分。

  1. 选中该复选框可启用发送世系事件，该复选框会展开显示输入字段以输入 Amazon DataZone 域名 ID。
+ AWS Glue (V5.0) 笔记本配置——在笔记本中，你可以通过添加 %%configure 魔法来自动收集 Spark 执行任务。此配置会将事件发送到 Amazon DataZone 域。

  ```
  %%configure --name project.spark -f
  {
      "--conf":"spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener --conf spark.openlineage.transport.type=amazon_datazone_api --conf spark.openlineage.transport.domainId={DOMAIN_ID}  --conf spark.glue.accountId={ACCOUNT_ID} --conf spark.openlineage.facets.custom_environment_variables=[AWS_DEFAULT_REGION;GLUE_VERSION;GLUE_COMMAND_CRITERIA;GLUE_PYTHON_VERSION; --conf spark.glue.JOB_NAME={JOB_NAME}"
  }
  ```

  下面是参数详细信息：
  + `spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener`- OpenLineageSparkListener 将在 Spark 的监听器总线中创建并注册
  + `spark.openlineage.transport.type=amazon_datazone_api`-这是一项 OpenLineage 规范，用于告诉 OpenLineage插件使用 DataZone API 传输向的 API 发送世系事件。 DataZone PostLineageEvent 欲了解更多信息，请参阅 [https://openlineage。 io/docs/integrations/spark/configuration/spark\_conf](https://openlineage.io/docs/integrations/spark/configuration/spark_conf)
  + `spark.openlineage.transport.domainId={DOMAIN_ID}` – 此参数用于建立一个域，API 传输将向该域提交血统事件。
  + `spark.openlineage.facets.custom_environment_variables [AWS_DEFAULT_REGION;GLUE_VERSION;GLUE_COMMAND_CRITERIA;GLUE_PYTHON_VERSION;]`-Glue 交互式会话填充的以下环境变量（AWS\_DEFAULT\_REGION GLUE\_VERSION、GLUE\_COMMAND\_CRITERIA 和 GLUE\_PYTHON\_VERSION）将被添加到 LineageEvent
  + `spark.glue.accountId=<ACCOUNT_ID>` – 元数据所在的 Glue Data Catalog 的账户 ID。此账户 ID 用于在血统事件中构建 Glue ARN。
  + `spark.glue.JOB_NAME` – 血统事件的作业名称。Notebook 中的作业名称可以设置为 `spark.glue.JOB_NAME: ${projectId}.${pathToNotebook}`。
+ 设置参数以配置 DataZone 从 AWS Glue 与亚马逊的通信

  参数键：--conf

  参数值：

  ```
  spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener 
  --conf spark.openlineage.transport.type=amazon_datazone_api 
  --conf spark.openlineage.transport.domainId=<DOMAIN_ID>
  --conf spark.openlineage.facets.custom_environment_variables=[AWS_DEFAULT_REGION;GLUE_VERSION;GLUE_COMMAND_CRITERIA;GLUE_PYTHON_VERSION;] 
  --conf spark.glue.accountId=<ACCOUNT_ID> (replace <DOMAIN_ID> and <ACCOUNT_ID> with the right values)
  ```

  对于 Notebook，请添加以下附加参数：

  ```
  --conf spark.glue.JobName=<SessionId> --conf spark.glue.JobRunId=<SessionId or NONE?>
  replace <SessionId> and <SessionId> with the right values
  ```

## 从 Amazon Redshift 实现血统自动化
<a name="datazone-data-lineage-automate-redshift"></a>

通过管理员设置的数据仓库蓝图配置，从 Amazon Redshift 服务中捕获世系，亚马逊会自动捕获世系。 DataZone世系运行会捕获为给定数据库执行的查询，并生成要存储在 Amazon 中的世系事件， DataZone 以便数据生成者或使用者在访问特定资产时进行可视化。

可以使用以下配置实现血统自动化：
+ 蓝图配置 – 设置蓝图的管理员可以将蓝图配置为自动捕获血统。通过此配置，管理员能够定义血统捕获的关键数据来源，而不需要依赖数据生成者对数据进行编目。要进行设置，请转到[在管理控制台中启用数据血统](#enable-data-lineage)。
+ 数据来源配置：数据生成者在为 Amazon Redshift 数据库配置数据来源运行时会看到该数据来源的自动数据血统设置。

  血统设置可以在**数据来源定义**选项卡中查看。数据生成者无法编辑此值。