本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在亚马逊 EMR 上使用 Spark 在 Amazon Glue 数据目录中使用多目录层次结构
您可以注册您的 Amazon EMR 集群以访问 Gl Amazon ue 数据目录,该目录使表和其他目录资源可供各种使用者使用。 Amazon Glue 数据目录支持多目录层次结构,可统一 Amazon S3 数据湖中的数据。它还提供了 Hive 元存储 API 和开源 Apache Iceberg REST API 来访问数据。这些功能可用于 Amazon EMR 和其他服务,如 Amazon Athena Amazon Redshift。
目录资源的组织方式
在 Amazon Glue 数据目录中创建资源时,您可以从任何支持 Apache Iceberg REST API 或 Hive 元存储的 SQL 引擎访问它们。 Amazon Lake Formation 管理权限。
在 G Amazon lue 数据目录中,数据按目录、数据库和表的逻辑层次结构进行组织:
目录:保存数据存储中的对象(例如架构或表)的逻辑容器。
-
用于存储 Redshift 托管存储 (RMS) 表的目录 — 当你管理目录以存储 RMS 表时,你可以使用 Iceberg 访问这些表。
数据库:在目录中组织数据对象(例如表和视图)。
表和视图:数据库中的数据对象,为抽象层提供可理解的架构。它们为访问底层提供了一层,这些数据可能采用各种格式并位于不同的位置。
配置 Amazon EMR 使用的数据目录
首先,您需要将目录配置为支持 Amazon EMR 工具。 Amazon Glue 数据目录提供 Hive 元存储兼容性,兼容 Iceberg REST。 APIs
使用 Hive 元数据仓配置亚马逊 EMR
有关如何设置的信息,请参阅 Amazon Glue 用户指南中的 Glue 数据目录对 Spark 作业的 Amazon 支持。本主题介绍如何将 Amazon Glue 数据目录配置为 Hive 元数据仓并使其可用作端点。此外,在使用 Glue 数据目录作为 Spark 的 A pache Hive 元数据存储中,还有亚马逊 EMR 文档向您展示了如何将 G Amazon lue 数据目录指定为 Spark 元数据库。 Amazon
访问 Glue 数据 Amazon 目录中资源的权限
本节介绍了使用 Amazon EMR 工具处理目录数据的 IAM 政策要求。向 Glue 数据 Amazon 目录注册集群后,您需要具有以下权限,才能发现随后创建的数据目录的创建和更改:
胶水:GetCatalog
胶水:GetCatalogs
sts: AssumeRole
sts: TagSession
sts: SetContext
sts: SetSourceIdentity
在大多数情况下,当您分配权限时,我们建议您创建一个 IAM 角色并为其分配权限。
此外,要查询目录数据,必须使用设置数据目录的权限 Amazon Lake Formation。有关在中设置数据目录权限的更多信息 Amazon Lake Formation,请参阅授予和撤销对 Data Catalog 资源的权限。
在创建和配置集群并对目录对象设置权限后,您可以提交任务来查询和处理数据。
配置 Spark 以访问 Amazon Glue 数据目录中的多目录层次结构
在 EMR 7.5 中,你可以将 Spark 配置为使用 Amazon Glue 的多目录层次结构。多目录层次结构允许您:
将现有 Amazon Redshift 数据仓库中的 Redshift 托管存储 (RMS) 数据(例如表、视图和物化视图)导入 Glue 数据目录。 Amazon 你可以使用 EMR on 和 EMR Serverless 来查询这些对象 EC2 。
使用 ZeroeTL 创建 RMS 目录、Glue 数据目录并将数据存储在 RMS 中,并使用兼容 Iceberg 的查询引擎查询数据。 Amazon
使用功能齐全的存储管理(包括压缩、快照和保留)在 Amazon Glue 数据目录中创建托管 Iceberg 表。
初始化 Spark 会话时连接到多目录
以下示例演示如何使用交互式 Spark Shell、Spark 提交或 Amazon EMR Notebooks 来使用 Amazon Glue 的多目录层次结构。
使用 G Amazon lue 数据目录初始化到 Redshift 托管存储的 Spark 会话
以下示例命令使用 Amazon Glue 数据目录初始化 Spark 会话。
spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=glue \ --conf spark.sql.catalog.rms.glue.id=
Glue RMS catalog ID
\ --conf spark.sql.defaultCatalog=rms --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
以下示例使用 Iceberg REST API 和带有 G Amazon lue 数据目录的 Redshift 托管存储初始化 Spark 会话。
spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=rest \ --conf spark.sql.catalog.rms.warehouse=
glue RMS catalog ID
\ --conf spark.sql.catalog.rms.uri=Glue endpoint URI
/iceberg \ --conf spark.sql.catalog.rms.rest.sigv4-enabled=true \ --conf spark.sql.catalog.rms.rest.signing-name=glue \ --conf spark.sql.defaultCatalog=rms \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
有关在 Spark Iceberg 中使用 Amazon Glue 多目录层次结构的更多信息,请参阅将 Iceberg 集群与 Spark 配合使用。
多目录配置注意事项和限制
不支持在 Apache Hive 元数据仓中使用多目录层次结构。
在使用时,在 Apache Iceberg 中使用多目录层次结构不支持回退到 Apache Hive 元数据仓。
SparkSessionCatalog
具有运行时角色的 EC2 集群上的 EMR 不支持多目录层次结构。
启用的 EC2 集群上的 EMR Amazon Lake Formation 不支持多目录层次结构。