本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 Amazon EMR 上的 Spark 在 Amazon Glue Data Catalog 中使用多目录层次结构
您可以注册您的 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 元存储配置 Amazon 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 策略要求。向 Amazon Glue Data Catalog 注册集群后,您需要以下权限才能发现随后创建的数据目录的创建和更改:
-
胶水: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 submit 或 Amazon EMR Notebooks 来处理 Glue 的多目录层次结构。 Amazon
使用 G Amazon lue 数据目录初始化到 Redshift 托管存储的 Spark 会话
以下示例命令使用 Amazon Glue Data Catalog 初始化 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 元存储结合使用。
-
在使用
SparkSessionCatalog时,将多目录层次结构与 Apache Hive 结合使用不支持回退到 Apache Hive 元存储。 -
具有运行时角色的 EC2 集群上的 EMR 不支持多目录层次结构。
-
启用的 EC2 集群上的 EMR Amazon Lake Formation 不支持多目录层次结构。