Apache Hudi 和 Lake Formation - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Apache Hudi 和 Lake Formation

在使用 Spark SQL 读取数据时,Amazon EMR 发行版 6.9.0 及更高版本包括对基于 Lake Formation 的访问控制及 Apache Hudi 的有限支持。Amazon EMR 支持针对使用 Spark SQL 的 SELECT 查询,并且仅限于列级访问控制。借助此功能,您现在可以运行以下命令:

  • 对写入时复制表的快照查询,用于在指定的提交或压缩时刻查询表的最新快照。

  • “读取时合并”表中的读取优化查询,用于查询最新的压缩数据,其中可能不包括尚未压缩的日志文件中的最新更新。

以下支持矩阵列出了 Apache Hudi 及 Lake Formation 的部分核心功能:

写入时复制 读取时合并

快照查询 - Spark SQL

N

读取优化查询 - Spark SQL

不适用

递增查询

N

N

时间旅行查询

N

N

Spark Datasource 查询

N

N

Spark Datasource 写入

N

N

DML/DDL

N

N

元数据表

N

N

查询 Hudi 表

本节介绍如何在启用 Lake Formation 的集群上运行上述支持的查询。该表应为已注册的目录表。

本节介绍如何运行 Lake Formation 集群支持的查询,如上所述

  1. 要启动 Spark Shell,请使用以下命令。

    spark-shell --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'
    spark-sql --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'
  2. 要查询写入时复制表的最新快照,请使用以下命令。

    select * from <my_hudi_cow_table>
    spark.read.table("<my_hudi_cow_table>")
  3. 要查询 MOR 表的最新压缩数据,可以查询以 _ro 为后缀的读取优化表:

    SELECT * from <my_hudi_mor_table>_ro
    spark.read.table("<my_hudi_mor_table>_ro")
注意

Lake Formation 集群上的读取性能可能会因不支持的优化而变慢。这些功能包括基于 Hudi 元数据的文件列表和数据跳过。我们建议您测试应用程序的性能,以确保其符合您的 SLA。