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

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

在 Amazon EMR 中将 Delta Lake与 Lake Formation 结合使用

当您使用 Spark SQL 读取和写入数据时,Amazon EMR 6.15.0 及更高版本支持 Amazon Lake Formation 使用 Delta Lake 进行基于的精细访问控制。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 Form 使用记录服务器来管理 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 Datalog 中创建 Delta Lake

使用 Lake Formation 的 Amazon EMR 不支持 DDL 命令和 Delta 表创建。按照以下步骤在 Amazon Glue Data Catalog 中创建表。

  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 中以 1 种array<string>数据类型存储所有 Amazon 列。

  4. 要在 Lake Formation 中定义列级和单元格级筛选条件,请从架构中删除 col 列,然后添加表架构中的列。在此示例中,添加 x y、和 z 列。