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

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

Delta Lake 和 Lake Formation

当你使用 Spark SQL 读取和写入数据时,Amazon EMR 6.15.0 及更高版本支持基于 Amazon Lake Formation 三角湖的精细访问控制。Amazon EMR 支持使用 Delta Lake 进行表、行、列和单元格级别的访问控制。使用此功能,您可以对 copy-on-write 表运行快照查询,以在给定的提交或压缩时刻查询表的最新快照。

要将 Delta Lake 与 Lake Formation 配合使用,请运行以下命令。

spark-sql \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \ --conf spark.sql.catalog.spark_catalog.lf.managed=true

如果你希望 Lake Formation 使用记录服务器来管理你的 Spark 目录,请设置spark.sql.catalog.<managed_catalog_name>.lf.managed为 true。

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

写入时复制 读取时合并

快照查询 - Spark SQL

读取优化查询 - Spark SQL

递增查询

不支持

不支持

时间旅行查询

不支持

不支持

元数据表

DML INSERT 命令

DDL 命令

Spark Datasource 查询

Spark Datasource 写入

在 Amazon Glue 数据目录中创建 Delta Lake 表

带有 Lake Formation 的 Amazon EMR 不支持 DDL 命令和 Delta 表创建。按照以下步骤在 Glue 数据 Amazon 目录中创建表。

  1. 使用以下示例创建 Delta 表。确保您的 S3 位置存在。

    spark-sql \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" > CREATE DATABASE if not exists <DATABASE_NAME> LOCATION 's3://<S3_LOCATION>/transactionaldata/native-delta/<DATABASE_NAME>/'; > CREATE TABLE <TABLE_NAME> (x INT, y STRING, z STRING) USING delta; > INSERT INTO <TABLE_NAME> VALUES (1, 'a1', 'b1');
  2. 要查看桌子的详细信息,请访问 https://console.aws.amazon.com/glue/

  3. 在左侧导航栏中,展开数据目录,选择,然后选择您创建的表。在 “架构” 下,您应该会看到使用 Spark 创建的 Delta 表将所有列存储在 Glue array<string> 中的数据类型 Amazon 中。

  4. 要在 Lake Formation 中定义col列级和单元级筛选器,请从架构中移除该列,然后添加表架构中的列。在此示例中,添加xy、和z