具有精细访问控制功能的 Apache Delta Lake - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

具有精细访问控制功能的 Apache Delta Lake

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

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

要在 EMR 7.10 及更高版本上使用 Delta Lake 和 Lake Formation,请运行以下命令:

spark-sql \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog

要在 EMR 6.15 到 7.9 上使用 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 数据目录中创建 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 列,然后添加表架构中的列。在此示例中,添加 x y、和 z 列。