我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用 Amazon SageMaker Lakehouse 中的 Amazon Glue Iceberg REST 目录从 Databricks 访问 Amazon S3 Iceberg 表
Amazon SageMaker Lakehouse 在您的现有数据湖和仓库上实现统一、开放和安全的湖仓平台。其统一的数据架构支持数据分析、商业智能、机器学习和生成式 AI 应用程序,这些应用程序现在可以利用数据的单一权威副本。借助 Amazon SageMaker Lakehouse,您可以两全其美——可以灵活使用具有成本效益的 Amazon Simple Storage Service(Amazon S3)存储和数据湖的可扩展计算,以及通常与数据仓库相关的性能、可靠性和 SQL 功能。
Amazon SageMaker Lakehouse 通过提供开源 Apache Iceberg REST API 来访问湖仓中的数据,从而实现互操作性。除了与 Apache Iceberg REST 规范兼容的第三方分析引擎外,客户现在可以使用自己选择的工具和各种亚马逊云科技服务,例如 Amazon Redshift、Amazon EMR、Amazon Athena 和 Amazon SageMaker,以及与 Apache Iceberg REST 规范兼容的第三方分析引擎来就地查询数据。
最后,Amazon SageMaker Lakehouse 现在为数据仓库和数据湖中的数据提供安全和细粒度的访问控制。通过将 Amazon Lake Formation 的资源权限控制集成到 Amazon Glue 数据目录中,Amazon SageMaker Lakehouse 允许客户在整个组织中安全地定义和共享对单一权威数据副本的访问权限。
在亚马逊云科技分析和 Databricks 中管理工作负载的组织现在可以使用这种开放安全的湖仓功能,在 Amazon S3 中统一对数据湖的策略管理和监督。在这篇文章中,我们将向您展示基于亚马逊云科技通用计算的 Databricks 如何与 Amazon Glue Iceberg REST 目录集成以进行元数据访问以及如何使用 Lake Formation 进行数据访问。为了保持本文中的设置简单明了,Glue Iceberg REST Catalog 和 Databricks 集群共享同一个亚马逊云科技账户。
解决方案概述
在这篇文章中,我们展示了如何使用 Glue Iceberg REST 目录从 Databricks 的计算中使用在数据目录中编目并存储在 Amazon S3 上的表,同时使用 Lake Formation 保护数据访问的安全。我们将向您展示如何配置集群以与 Glue Iceberg REST Catalog 交互,如何使用笔记本使用 Lake Formation 临时凭证访问数据,并进行分析以得出见解。
下图显示了前一段中描述的架构。
先决条件
要遵循本文中介绍的解决方案,您需要满足以下亚马逊云科技先决条件:
- 访问您的亚马逊云科技账户中的 Lake Formation 数据湖管理员。Lake Formation 数据湖管理员是 IAM 委托人,可以注册 Amazon S3 位置、访问数据目录、向其他用户授予 Lake Formation 权限以及查看 Amazon CloudTrail。参见创建数据湖管理员了解更多信息。
- 为外部引擎启用全表访问权限以访问 Lake Formation 中的数据。
- 以 IAM 管理员身份登录 Lake Formation 控制台,然后在导航窗格中选择管理。
- 选择应用程序集成设置,然后选择允许外部引擎以全表访问权限访问 Amazon S3 位置中的数据。
- 选择 "保存"。
- 现有 Amazon Glue 数据库和表。在本文中,我们将使用名为
icebergdemodb
的 Amazon Glue 数据库,其中包含一个名为 person 的 Iceberg 表,数据存储在名为icebergdemodatalake
的 S3 通用存储桶中。 - 用户定义的 IAM 角色,Lake Formation 在访问上述 S3 位置中的数据以提供范围内的凭证时担任该角色。按照用于注册地点的角色要求中提供的说明进行操作。在这篇文章中,我们将使用 IAM 角色
LakeFormationRegistrationRole
。
除了亚马逊云科技的先决条件外,您还需要访问 Databricks Workspace(在亚马逊云科技上),并能够在无隔离共享访问模式下创建集群。
设置实例配置文件角色。有关如何创建和设置角色的说明,请参阅在 Databricks 中管理实例配置文件。使用以下策略创建名为 dataplane-glue-lf-policy
的客户托管策略,并将其附加到实例配置文件角色:
在本文中,我们将使用实例配置文件角色 (databricks-dataplane-instance-profile-role
),该角色将附加到先前创建的集群。
将 Amazon S3 位置注册为数据湖位置
向 Lake Formation 注册 Amazon S3 位置可为 IAM 角色提供 S3 位置的读取/写入权限。在这种情况下,您需要使用 LakeFormationRegistrationRole
IAM 角色注册 icebergdemodatalake
存储桶位置。
注册该位置后,Lake Formation 在向可访问该 S3 存储桶位置中数据的兼容(必备步骤 2)的集成式亚马逊云科技服务/第三方分析引擎授予临时证书时将担任该 LakeFormationRegistrationRole
角色。
要将 Amazon S3 位置注册为数据湖位置,请完成以下步骤:
- 以数据湖管理员身份登录用于 Lake Formation 的亚马逊云科技管理控制台。
- 在导航窗格中,选择 "管理" 下的 "数据湖位置"。
- 选择注册地点。
- 对于 Amazon S3 路径,请输入
s3://icebergdemodatalake
。 - 对于 IAM 角色,选择 LakeFormationRegistrationRole。
- 对于权限模式,选择 Lake Formation。
- 选择注册地点。
向 Databricks 中使用的 IAM 角色授予数据库和表权限
向 Databricks IAM 实例角色授予 icebergdemodb
数据库的 DESCRIBE 权限。
- 以数据湖管理员身份登录 Lake Formation 控制台。
- 在导航窗格中,选择数据湖权限,然后选择授予。
- 在 "原则" 部分中,选择 IAM 用户和角色,然后选择 databricks-dataplane-instance-profile-role。
- 在 LF 标签或目录资源部分中,选择命名数据目录资源。为目录选择
<accountid>
,为数据库选择 icebergdemodb。 - 为数据库权限选择 DESCRIBE。
- 选择 "授予"。
向 Databricks IAM 实例角色授予 icebergdemodb
数据库中人员表的 SELECT 和 DESCRIBE 权限。
- 在导航窗格中,选择数据湖权限,然后选择授予。
- 在 "原则" 部分中,选择 IAM 用户和角色,然后选择 databricks-dataplane-instance-profile-role。
- 在 LF 标签或目录资源部分中,选择命名数据目录资源。为目录选择
<accountid>
,为数据库选择 icebergdemodb,选择 person 作为表。 - 为表权限选择 SUPER。
- 选择 "授予"。
向 Databricks IAM 实例角色授予存储桶上的数据位置权限。
- 在 Lake Formation 控制台导航窗格中,选择数据位置,然后选择授权。
- 对于 IAM 用户和角色,选择 databricks-dataplane-instance-profile-role。
- 对于存储位置,选择 s3://icebergdemodatalake。
- 选择 "授予"。
Databricks 工作空间
创建集群并将其配置为与 Glue Iceberg REST Catalog 终端节点连接。在这篇文章中,我们将使用运行时版本 15.4 LTS(包括 Apache Spark 3.5.0、Scala 2.12)的 Databricks 集群。
- 在 Databricks 控制台中,在导航窗格中选择 "计算"。
- 使用运行时版本 15.4 LTS 创建集群,访问模式为 "不共享隔离",然后在 "配置" 部分下选择
databricks-dataplane-instance-profile-role
作为实例配置文件角色。 - 展开 "高级选项" 部分。在 Spark 部分中,Spark 配置包括以下详细信息:
- 在 "集群" 部分中,库包含以下 jar:
org.apache.iceberg-spark-runtime-3.5_2.12:1.6.1
software.amazon.awssdk:bundle:2.29.5
创建用于分析数据目录中管理的数据的笔记本:
- 在工作区浏览器中,创建一个新的笔记本并将其连接到上面创建的集群。
- 在笔记本电脑单元中运行以下命令来查询数据。
- 使用 Amazon Glue Iceberg REST 目录进一步修改 S3 数据湖中的数据。
这表明您现在可以使用 Amazon Glue Iceberg REST 目录终端节点分析 Databricks 集群中的数据,并由 Lake Formation 管理数据访问。
清理
要清理本文中使用的资源并避免可能的费用,请执行以下操作:
- 删除在 Databricks 中创建的集群。
- 删除为此帖子创建的 IAM 角色。
- 删除在数据目录中创建的资源。
- 清空 S3 存储桶,然后删除。
结论
在这篇文章中,我们向您展示了如何在 Amazon Glue 数据目录中集中管理数据集,以及如何使用 Iceberg REST 目录 API 让 Databricks 的计算人员访问该数据集。该解决方案还使您能够使用 Databricks 将现有访问控制机制与 Lake Formation 结合使用,Lake Formation 用于管理元数据访问并使用凭证自动售货实现底层 Amazon S3 存储访问。
试用该功能,并在评论中分享您的反馈。
作者简介
Srividya Parthasarathy 是亚马逊云科技 Lake Formation 团队的高级大数据架构师。她与产品团队和客户合作,为他们的分析数据平台构建强大的功能和解决方案。她喜欢构建数据网格解决方案并与社区共享。
Venkatavaradhan(Venkat)Viswanathan 是亚马逊云科技的全球合作伙伴解决方案架构师。Venkat 是数据、人工智能、机器学习、生成式人工智能和高级分析领域的技术战略领导者。Venkat 是 Databricks 的全球中小企业,帮助亚马逊云科技客户在亚马逊云科技上设计、构建、保护和优化 Databricks 工作负载。
Pratik Das 是 Amazon Lake Formation 的高级产品经理。他对所有数据都充满热情,并与客户合作以了解他们的需求并打造愉快的体验。他具有构建数据驱动解决方案和机器学习系统的背景。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。