使用 Amazon Glue 数据目录视图(预览) - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon Glue 数据目录视图(预览)

注意

Amazon 亚马逊 EMR 中的 Glue 数据目录视图为预览版,可能会发生变化。该功能作为 Amazon 服务条款中定义的预览服务提供。

您可以在 Amazon Glue 数据目录中创建和管理单个常用视图。单个常用视图很有用,因为它们支持多个 SQL 查询引擎,因此您可以跨不同的视图访问相同的视图,例如亚马逊 EMR Amazon Web Services、Amazon Athena 和 Amazon Redshift。

通过在数据目录中创建视图,您可以在中使用资源授予和基于标签的访问控制 Amazon Lake Formation 来授予对数据目录视图的访问权限。使用这种访问控制方法,您无需为创建视图时引用的表配置其他访问权限。这种授予权限的方法称为定义者语义,这些视图称为定义者视图。有关 Lake Formati on 中访问控制的更多信息,请参阅授予和撤消数据目录资源的权限。 在《 Amazon Lake Formation 开发人员指南》中。

数据目录视图对以下用例非常有用:

  • 精细访问控制-创建一个视图,根据用户所需的权限限制数据访问。例如,您可以使用 Data Catalog 中的视图来防止不在 HR 部门工作的员工查看个人身份信息 (PII)。

  • 完整视图定义-通过对数据目录中的视图应用某些筛选器,可以确保数据目录中视图内的数据记录始终完整。

  • 增强安全性-用于创建视图的查询定义必须完整。此优势意味着数据目录中的视图不易受到恶意玩家的 SQL 命令的影响。

  • 简单共享数据 — Amazon Web Services 账户 无需移动任何数据即可与其他人共享数据。有关更多信息,请参阅 La ke Formation 中的跨账户数据共享

创建 Data Catalog 视图

重要

在此预览版中,Amazon EMR 不会验证您在创建视图时使用的 Spark-SQL。为了降低风险,我们建议您限制向其授予视图创建权限的用户。

要创建数据目录视图,您必须使用具有完全SELECT权限的 IAM 角色,该角色具有创建视图时要引用的所有表的Grantable选项。这个角色被称为定义者角色。有关创建数据目录视图所需的权限和先决条件的完整列表,请参阅《 Amazon Lake Formation 开发人员指南》中的使用视图。您必须使用 Amazon CLI 来配置您的 IAM 角色。有关更多信息,请参阅中的 Amazon CLI使用 IAM 角色

按照以下步骤创建数据目录视图。

注意

要从 Amazon EMR 上的 Apache Spark 访问数据目录视图,您必须将方言设置为,并将方言设置SPARK为。DialectVersion 3.4.1-amzn-2

  1. 首先下载预览模型。

    aws s3 cp s3://emr-data-access-control-us-east-1/beta/glue-views/model/service-2.json
  2. 将配置 Amazon CLI 为使用预览模型。

    aws configure add-model --service-model file:///<path-to-preview-model>/service-2.json --service-name glue-views
  3. 创建视图。

    aws glue-views create-table --cli-input-json '{ "DatabaseName": "<database>", "TableInput": { "Name": "<view>", "StorageDescriptor": { "Columns": [ { "Name": "<col1>", "Type": "<data-type>" }, ... { "Name": "<colN>", "Type": "<data-type>" } ] }, "ViewDefinition": { "SubObjects": [ "arn:aws:glue:<aws-region;>:<aws-account-id>:table/<database>/<referenced-table1>", ... "arn:aws:glue:<aws-region>:<aws-account-id>:table/<database>/<referenced-tableN>", ], "IsProtected": true, "Representations": [ { "Dialect": "SPARK", "DialectVersion": "3.4.1-amzn-2", "ViewOriginalText": "<Spark-SQL>", "ViewExpandedText": "<Spark-SQL>" } ] } } }'

启用对数据目录视图的访问权限

重要

我们建议您仅允许在测试环境中使用 EMR 集群访问数据目录视图,而不要在生产环境中启用对数据目录视图的访问权限。

要在亚马逊 EMR 上通过 Apache Spark 访问数据目录视图,必须先启用对 Lake Formation 的支持,然后使用以下脚本启用对亚马逊 EMR 上使用 Spark 视图的支持。有关启用支持的更多信息,请参阅使用 Amazon EMR 启用 Lake Formation 和使用自定义引导操作

# Download the script and upload it to Amazon S3 wget https://emr-data-access-control-us-east-1.s3.amazonaws.com/beta/glue-views/ba/enable-mdv.sh /Users/$USER/enable-mdv.sh aws s3 cp /Users/$USER/enable-views.sh s3://<bucket>/<prefix>/enable-views.sh # EMR Security Configuration cat <<EOT > /Users/$USER/lakeformation-protection.json { "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true }, "LakeFormationConfiguration":{ "AuthorizedSessionTagValue":"Amazon EMR" } }, "EncryptionConfiguration": { "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://<BUCKET>/<PREFIX>/certificates.zip" } } } } EOT SECURITY_CONFIG="RuntimeRolesWithAWSLakeFormation" aws emr create-security-configuration \ --name $SECURITY_CONFIG \ --security-configuration file:///Users/$USER/lakeformation-protection.json # EMR Cluster version RELEASE_LABEL="emr-6.15.0"

然后使用以下使用引导操作的 Amazon CLI 命令创建支持数据目录视图的 EMR 集群。

aws emr create-cluster \ ... --release-label $RELEASE_LABEL \ --security-configuration $SECURITY_CONFIG \ --bootstrap-actions \ Name='Enable Views',Path="s3://<bucket>/<prefix>/enable-views.sh"

查询 Data Catalog 视图

重要

在此预览版中,我们建议您仅访问来自可信来源的视图。在预览版中,Amazon EMR 的验证数量有限,可以保护您的 EMR 集群。

创建数据目录视图后,您现在可以使用 IAM 角色查询该视图。IAM 角色必须拥有数据目录视图的SELECT权限。您无需授予对视图中引用的基础表的访问权限。您必须将此 IAM 角色用作运行时角色。您可以使用 Amazon EMR 步骤、EMR Studio 和 Studio 中的运行时角色从 EMR 集群访问视图。 SageMaker 有关运行时角色的更多信息,请参阅 Amazon EMR 步骤的运行时角色

设置完所有内容后,就可以查询视图了。例如,在 EMR Studio 中将 EMR 集群连接到 Workspace 后,您可以运行以下查询来访问视图。

SELECT * from <database>.<glue-data-catalog-view> LIMIT 10

限制

使用数据目录视图时,请考虑以下限制。

  • 您只能使用 Amazon EMR 6.15.0 创建数据目录视图。

  • 在视图定义中,您最多只能引用 10 个表。

  • 您只能创建PROTECTED数据目录视图。 UNPROTECTED不支持视图。

  • 您不能在数据目录视图中引用其他视图 Amazon Web Services 账户 中的表。

  • 不支持用户定义的函数 (UDF)。

  • 你不能在数据目录视图中引用诸如 Apache Hudi 或 Apache Iceberg 之类的开放表格式。

  • 您不能在数据目录视图中引用其他视图。