Amazon DataZone 中的数据血统支持
Amazon DataZone 中的数据血统是一项兼容 OpenLineage 的功能,可帮助您从支持 OpenLineage 的系统或通过 API 捕获和可视化血统事件,从而跟踪数据来源、跟踪转换和查看跨组织的数据使用情况。它为您提供了数据资产的总体视图,以便查看资产的来源及其连接链。世系数据包括有关 Amazon DataZone 的业务数据目录内活动的信息,包括有关已编目的资产、这些资产的订阅用户以及使用 API 以编程方式捕获的业务数据目录之外发生的活动的信息。
主题
可以将血统设置为自动从 AWS Glue 和 Amazon Redshift 数据库(在添加到 Amazon DataZone 后)捕获。此外,可以将在 AWS Glue(v5.0 及更高版本)控制台或 Notebook 中运行的 Spark ETL 作业配置为向 Amazon DataZone 域发送血统事件。
在 Amazon DataZone 中,域管理员可以在设置数据湖和数据仓库内置蓝图的同时配置血统,从而确保从这些资源创建的所有数据来源运行都启用自动血统捕获。
利用 Amazon DataZone 的与 OpenLineage 兼容的 API,域管理员和数据创建者可以捕获和存储 Amazon DataZone 允许范围之外的世系事件,包括 Amazon S3、AWS Glue 和其他服务中的转换。这为数据使用者提供了全面视图,帮助他们自信地了解资产来源,同时数据创建者可以通过了解资产的使用情况来评估资产更改产生的影响。此外,Amazon DataZone 会对每个事件的世系进行版本控制,使用户能够在任何时间点可视化世系,或跨资产或作业的历史记录比较转换。此历史世系可让用户更深入地了解数据的演变过程,这对于故障排除、审计和确保数据资产的完整性至关重要。
利用数据世系,您可以在 Amazon DataZone 中完成以下任务:
-
了解数据的来源:了解数据源自何处可让您清楚地了解数据的源、依赖关系和转换,从而增强对数据的信任。此透明度有助于自信地做出数据驱动型决策。
-
了解数据管道更改产生的影响:在对数据管道进行更改时,可以使用世系功能来标识所有将受影响的下游使用者。这有助于确保在不中断关键数据流的情况下进行更改。
-
确定数据质量问题的根本原因:如果在下游报告中检测到数据质量问题,则可以使用世系(尤其是列级世系)来追溯数据(在列级别),以将问题追溯到其源。这可帮助数据工程师识别和修复问题。
-
改善数据治理和合规性:可使用列级世系来演示对数据治理和隐私法规的遵从性。例如,可使用列级世系来显示敏感数据(例如 PII)的存储位置以及下游活动中处理敏感数据的方式。
Amazon DataZone 中的世系节点类型
在 Amazon DataZone 中,数据世系信息显示在代表表和视图的节点中。根据项目(例如,在数据门户左上角选择的项目)的上下文,创建者可以同时查看库存资产和已发布的资产,而使用者只能查看已发布的资产。首次在资产详细信息页面中打开世系选项卡时,已编目的数据集节点是通过世系图的世系节点向上游或下游导航的起点。
以下是 Amazon DataZone 中支持的数据世系节点的类型:
-
数据集节点 – 此节点类型包括有关特定数据资产的数据世系信息。
-
包含在 Amazon DataZone 目录中发布的 AWS Glue 或 Amazon Redshift 资产的相关信息的数据集节点是自动生成的,并且节点中包含相应的 AWS Glue 或 Amazon Redshift 图标。
-
包含未在 Amazon DataZone 目录中发布的资产的相关信息的数据集节点由域管理员(创建者)手动创建,并由节点内的默认自定义资产图标表示。
-
-
作业(运行)节点 – 此节点类型显示作业的详细信息,包括特定作业的最新运行和运行详细信息。此节点还捕获作业的多次运行,并且可在节点详细信息的历史记录选项卡中查看。您可以通过选择节点图标来查看节点详细信息。
世系节点中的关键属性
世系节点中的 sourceIdentifier 属性表示数据集上发生的事件。世系节点的 sourceIdentifier 是数据集的标识符(表/视图等)。它用于在世系节点上强制实施唯一性。例如,不能有两个具有同一 sourceIdentifier 的世系节点。以下是不同类型的节点的 sourceIdentifier 值的示例:
-
对于具有相应数据集类型的数据集节点:
-
资产:amazon.datazone.asset/<assetId>
-
清单(已发布的资产):amazon.datazone.listing/<listingId>
-
AWS Glue 表:arn:aws:glue:<region>:<account-id>:table/<database>/<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 以便能够将资产映射到上游资源。
可视化数据世系
Amazon DataZone 的资产详细信息页面数据世系的图形表示形式,以便更轻松地可视化上游或下游的数据关系。资产详细信息页面提供以下功能来浏览图表:
-
列级世系:如果列级世系在数据集节点中可用,则扩展列级世系。如果源列信息可用,这将自动显示与上游或下游数据集节点的关系。
-
列搜索:当列数的默认显示为 10 时。如果超过 10 个列,则将激活分页以导航到其余列。要快速查看特定列,可以在仅列出已搜索列的数据集节点上进行搜索。
-
仅查看数据集节点:如果要切换为仅查看数据集世系节点并筛选出作业节点,您可以选择图表查看器左上角的“打开视图控件”图标,然后切换仅显示数据集节点选项。这将从图表中删除所有作业节点,并让您仅浏览数据集节点。请注意,在启用“仅查看数据集节点”时,图表无法向上游或下游展开。
-
详细信息窗格:每个世系节点都具有捕获到的详细信息,并且会在选中时显示。
-
数据集节点具有一个详细信息窗格,其中显示针对给定时间戳为该节点捕获的所有详细信息。每个数据集节点具有 3 个选项卡,即:“世系信息”、“架构”和“历史记录”选项卡。“历史记录”选项卡列出为该节点捕获的世系事件的不同版本。从 API 捕获的所有详细信息都使用元数据表单或 JSON 查看器显示。
-
作业节点具有一个详细信息窗格,其中显示作业详细信息与“作业信息”和“历史记录”选项卡。详细信息窗格还捕获在作业运行过程中捕获到的查询或表达式。“历史记录”选项卡列出为该节点捕获的作业运行的不同版本。从 API 捕获的所有详细信息都使用元数据表单或 JSON 查看器显示。
-
-
版本选项卡:Amazon DataZone 数据世系中的所有世系节点都受版本控制。对于每个数据集节点或作业节点,版本都将作为历史记录捕获,这使您能够在各个版本之间导航以确定随时间推移发生的变化。每个版本都会在世系页面中打开一个新的选项卡以帮助进行比较。
Amazon DataZone 中的数据世系授权
写入权限 – 要将世系数据发布到 Amazon DataZone 中,您必须拥有一个 IAM 角色,其权限策略包括针对 PostLineageEvent API 的 ALLOW 操作。此 IAM 授权在 API Gateway 层进行。
读取权限 – 有两个操作:GetLineageNode 和 ListLineageNodeHistory,它们包含在 AmazonDataZoneDomainExecutionRolePolicy 托管式策略中,因此 Amazon DataZone 域中的每个用户都能调用这两个操作来遍历数据世系图表。
Amazon DataZone 中的数据世系示例体验
您可以使用数据世系示例体验来浏览和理解 Amazon DataZone 中的数据世系,包括在数据世系图表中遍历上游或下游、浏览版本和列级世系。
完成以下过程,在 Amazon DataZone 中试用示例数据世系体验:
-
导航到 Amazon DataZone 数据门户 URL,并使用单点登录(SSO)或您的 AWS 凭证进行登录。如果您是 Amazon DataZone 管理员,则可以导航到 Amazon DataZone 控制台(网址为 https://console.aws.amazon.com/datazone
),并使用在其中创建域的 AWS 账户进行登录,然后选择打开数据门户。 -
选择任何可用的数据资产以打开资产的详细信息页面。
-
在资产的详细信息页面上,选择血统选项卡,将鼠标悬停在信息图标上,然后选择尝试示例血统。
-
在数据世系弹出窗口中,选择开始引导式数据世系旅程。
此时,将显示一个全屏选项卡,其中提供了世系信息的所有空间。示例数据世系图表最初在上游和下游两端显示一个深度为 1 的基本节点。您可以将图表扩展到上游或下游。您也可以选择列信息,并查看世系如何流经节点。
在管理控制台中启用数据血统
您可以在配置默认数据湖和默认数据仓库蓝图的过程中启用数据血统。
完成以下过程为默认数据湖蓝图启用数据血统。
-
导航到 Amazon DataZone 控制台(网址为 https://console.aws.amazon.com/datazone
),然后使用您的账户凭证登录。 -
选择查看域,然后选择要在其中为 DefaultDataLake 蓝图启用数据血统的域。
-
在域详细信息页面上,导航到蓝图选项卡。
-
在 DefaultDataLake 蓝图的详细信息页面上,选择区域选项卡。
-
您可以在为 DefaultDataLake 蓝图添加区域的过程中启用数据血统。因此,如果已经添加了一个区域,但其中的数据血统功能未启用(导入数据血统列中显示了否),则必须先删除该区域。要启用数据血统,请选择添加区域,然后选择要添加的区域,并确保在添加区域弹出窗口中选中启用导入数据血统复选框。
要为 DefaultDataWarehouse 蓝图启用数据血统,请完成以下过程。
-
导航到 Amazon DataZone 控制台(网址为 https://console.aws.amazon.com/datazone
),然后使用您的账户凭证登录。 -
选择查看域,然后选择要在其中为 DefaultDataWarehouse 蓝图启用数据血统的域。
-
在域详细信息页面上,导航到蓝图选项卡。
-
在 DefaultDataWarehouse 蓝图的详细信息页面上,选择参数集选项卡。
-
您可以在为 DefaultDataWarehouse 蓝图添加参数集的过程中启用数据血统。为此,请选择创建参数集。
-
在创建参数集页面上,指定以下内容,然后选择创建参数集。
-
参数集的名称。
-
参数集的描述。
-
要在其中创建环境的 AWS 区域。
-
指定 Amazon DataZone 使用这些参数来建立与您的 Amazon Redshift 集群的连接还是与无服务器工作组的连接。
-
指定 AWS 密钥。
-
指定要在创建环境时使用的集群或无服务器工作组。
-
指定要在创建环境时使用的数据库(在指定的集群或工作组中)的名称。
-
在导入数据血统下,选中启用导入数据血统。
-
以编程方式使用 Amazon DataZone 数据世系
要在 Amazon DataZone 中使用数据世系功能,您可以调用以下 API:
为 AWS Glue 目录实现血统自动化
AWS Glue 数据库和表添加到 Amazon DataZone 目录后,将使用数据来源运行自动为这些表提取血统。对于此来源,有几种方法可以实现血统自动化:
-
蓝图配置 – 设置蓝图的管理员可以将蓝图配置为自动捕获血统。通过此配置,管理员能够定义血统捕获的关键数据来源,而不需要依赖数据生成者对数据进行编目。有关更多信息,请参阅 在管理控制台中启用数据血统。
-
数据来源配置 – 数据生成者在为 AWS Glue 数据库配置数据来源运行时会看到一个包含数据质量的视图,该视图将告知该数据来源的自动数据血统。
-
血统设置可以在数据来源定义选项卡中查看。数据生成者无法编辑此值。
-
数据来源运行中的血统集合从表元数据中获取信息以建立血统。AWSGlue 爬网程序支持多种类型的来源,在数据来源运行过程中会为其捕获血统的来源包括 Amazon S3、DynamoDB、Catalog、Delta Lake、Iceberg 表以及存储在 Amazon S3 中的 Hudi 表。目前不支持 JDBC 和 DocumentDB 或 MongoDB 作为来源。
-
限制 – 如果表的数量大于 100 个,血统运行将在 100 个表之后失败。确保 AWS Glue 爬网程序未配置为在一次运行中引入超过 100 个表。
-
-
AWS Glue(v5.0)配置 – 在 AWS Glue Studio 中运行 AWS Glue 作业时,可以为作业配置数据血统,使其将血统事件直接发送到 Amazon DataZone 域。
-
导航到 AWS 控制台(网址为 https://console.aws.amazon.com/gluestudio),然后使用您的账户凭证登录。
-
选择 ETL 作业,然后创建新作业或单击任何现有作业。
-
转到作业详细信息(包括 ETL 流程作业)选项卡,然后向下滚动到“生成血统事件”部分。
-
选中该复选框以启用发送血统事件,该复选框将展开以显示输入字段,用于输入 Amazon DataZone 域 ID。
-
-
AWS Glue(V5.0)Notebook 配置 – 在 Notebook 中,您可以通过添加 %%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 传输向 DataZone 的 PostLineageEvent API 发送血统事件。有关更多信息,请参阅 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}。
-
-
设置参数以配置从 AWS Glue 到 Amazon DataZone 的通信
参数键:--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 实现血统自动化
利用管理员配置的数据仓库蓝图从 Amazon Redshift 服务捕获数据血统时,血统会自动被 Amazon DataZone 捕获。血统运行会捕获为给定数据库执行的查询,并生成要存储在 Amazon DataZone 中的血统事件,以便数据生成者或使用者在访问特定资产时对其进行可视化。
可以使用以下配置实现血统自动化:
-
蓝图配置 – 设置蓝图的管理员可以将蓝图配置为自动捕获血统。通过此配置,管理员能够定义血统捕获的关键数据来源,而不需要依赖数据生成者对数据进行编目。要进行设置,请转到在管理控制台中启用数据血统。
-
数据来源配置:数据生成者在为 Amazon Redshift 数据库配置数据来源运行时会看到该数据来源的自动数据血统设置。
血统设置可以在数据来源定义选项卡中查看。数据生成者无法编辑此值。