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

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

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

要将 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 Data Catalog 中创建 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 表在 Amazon Glue 中以 array<string> 数据类型存储所有列。

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