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