将 Amazon EMR 与 Lake Formation 结合使用时的注意事项 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Amazon EMR 与 Lake Formation 结合使用时的注意事项

带有 Lake Formation 的 Amazon EMR 适用于所有可用区域。

7.9 及更早版本中带有 Lake Formation 的亚马逊 EMR 注意事项

在 EMR 7.9 及更早 Amazon Lake Formation 版本上使用时,请考虑以下几点。

  • 行、列和单元格级别的精细访问控制在 Amazon EMR 6.15 及更高版本的集群上可用。

  • 具有表访问权限的用户可以访问该表的所有属性。如果您对表具有基于 Lake Formation 的访问控制,则请查看该表以确保属性不包含任何敏感数据或信息。

  • 当 Spark 收集表统计数据时,带有 Lake Formation 的 Amazon EMR 集群不支持 Spark 回退到 HDFS。这通常有助于优化查询性能。

  • 通过不受监管的 Apache Spark 表支持基于 Lake Formation 的访问控制的操作包括 INSERT INTOINSERT OVERWRITE

  • 通过 Apache Spark 和 Apache Hive 支持基于 Lake Formation 的访问控制的操作包括 SELECTDESCRIBESHOW DATABASESHOW TABLESHOW COLUMNSHOW PARTITION

  • Amazon EMR 不支持对以下基于 Lake Formation 的操作进行访问控制:

    • 写入受监管表

    • Amazon EMR 不支持 CREATE TABLE。Amazon EMR 6.10.0 及更高版本支持 ALTER TABLE

    • INSERT 命令之外的 DML 语句。

  • 使用和不使用基于 Lake Formation 的访问控制的同一查询之间存在性能差异。

  • 您只能将 Amazon EMR 与 Lake Formation 结合使用来执行 Spark 作业。

  • Glue 数据目录中的多目录层次结构不支持可信身份传播。有关更多信息,请参阅 Amazon Glue 数据目录中的使用多目录层次结构

7.10 及更高版本中带有 Lake Formation 的亚马逊 EMR 注意事项

在 EMR 7.10 及更高版本中使用 Amazon Amazon Lake Formation EMR 时,请考虑以下几点。

  • 亚马逊 EMR 仅支持通过 Lake Formation 对 Apache Hive、Apache Iceberg、Apache Delta 和 Apache Hudi 表进行精细访问控制。Apache Hive 格式包括 Parquet、ORC 和 xSV CSV。

  • 对于支持 Lake Formation 的应用程序,Spark 日志分两组写入 Amazon S3:系统空间日志和用户空间日志。系统空间日志可能包含敏感信息,例如完整表架构。为了保护这些数据,Amazon EMR 将系统空间日志存储在与用户空间日志不同的位置。强烈建议账户管理员不要授予用户访问系统空间日志的权限。

  • 如果您向 Lake Formation 注册表位置,则数据访问将完全由用于注册的角色的权限控制,而不是由 Amazon EMR 作业运行时角色控制。如果注册角色配置错误,则尝试访问表的作业将失败。

  • 您不能为 Lake Formation 作业关闭 DynamicResourceAllocation

  • 您只能将 Lake Formation 与 Spark 作业结合使用。

  • 带有 Lake Formation 的 Amazon EMR 在整个作业中仅支持单个 Spark 会话。

  • 带有 Lake Formation 的 Amazon EMR 仅支持通过资源链接共享的跨账户表格查询。

  • 不支持以下项:

    • 弹性分布式数据集(RDD)

    • Spark 流

    • 使用 Lake Formation 授予的权限写入

    • 嵌套列的访问控制

  • Amazon EMR 会屏蔽可能破坏系统驱动程序完全隔离的功能,包括:

    • UDTs、Hive UDFs 以及任何涉及自定义类的用户定义函数

    • 自定义数据来源

    • 为 Spark 扩展、连接器或元存储提供额外的 jar

    • ANALYZE TABLE 命令

  • 为了强制执行访问控制,EXPLAIN PLAN 和 DDL 操作(如 DESCRIBE TABLE)不会公开受限信息。

  • Amazon EMR 限制在支持 Lake Formation 的应用程序上访问系统驱动程序 Spark 日志。由于系统驱动程序以提升的权限运行,因此系统驱动程序生成的事件和日志可能包含敏感信息。为了防止未经授权的用户或代码访问这些敏感数据,Amazon EMR 禁止访问系统驱动程序日志。

    系统配置文件日志始终保存在托管存储中,这是一项强制性设置,无法禁用。这些日志使用客户托管 KMS 密钥或托管 KMS 密钥 Amazon 进行安全存储和加密。

    如果您的 Amazon EMR 应用程序位于带有 Amazon S3 的 VPC 终端节点的私有子网中,并且您附加了终端节点策略来控制访问权限,那么在您的任务可以将日志数据发送到 Amazon 托管 Amazon S3 之前,您必须在 VPC 策略中包含对 S3 网关终端节点的托管存储中详述的权限。如需疑难解答请求,请联系 Amazon 支持人员。

  • 如果您在 Lake Formation 中注册了表位置,则无论亚马逊 EMR 作业运行时角色的 IAM 权限如何,数据访问路径都将通过 Lake Formation 存储的证书。如果错误配置了在表位置注册的角色,那么使用具有 S3 IAM 权限的角色提交到表位置的作业就会失败。

  • 写入 Lake Formation 表使用的是 IAM 权限,而不是 Lake Formation 授予的权限。如果作业运行时角色拥有必要的 S3 权限,就可以使用该权限来运行写操作。

以下是使用 Apache Iceberg 时的注意事项和限制:

  • 您只能在会话目录中使用 Apache Iceberg,而不能使用任意命名的目录。

  • 在 Lake Formation 中注册的 Iceberg 表仅支持元数据表 historymetadata_log_entriessnapshotsfilesmanifestsrefs。Amazon EMR 会隐藏可能包含敏感数据的列,例如 partitionspathsummaries。此限制不适用于未在 Lake Formation 中注册的 Iceberg 表。

  • 未在 Lake Formation 中注册的表支持所有 Iceberg 存储过程。任何表都不支持 register_tablemigrate 程序。

  • 我们建议你使用 Iceberg DataFrameWriter V2 而不是 V1。