亚马逊的 Apache Iceberg 和 Lake Formation EMR - Amazon EMR

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

亚马逊的 Apache Iceberg 和 Lake Formation EMR

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

如果要使用 Iceberg 格式,请设置以下配置。将 DB_LOCATION 替换为 Iceberg 表所在的 Amazon S3 路径,并将区域和账户 ID 占位符替换为您自己的值。

spark-sql \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension --conf spark.sql.catalog.iceberg_catalog=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.iceberg_catalog.warehouse=s3://DB_LOCATION --conf spark.sql.catalog.iceberg_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.iceberg_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO --conf spark.sql.catalog.iceberg_catalog.glue.account-id=ACCOUNT_ID --conf spark.sql.catalog.iceberg_catalog.glue.id=ACCOUNT_ID --conf spark.sql.catalog.iceberg_catalog.client.assume-role.region=AWS_REGION --conf spark.sql.secureCatalog=iceberg_catalog

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

您还应小心NOT传递以下假设角色设置:

--conf spark.sql.catalog.my_catalog.client.assume-role.region --conf spark.sql.catalog.my_catalog.client.assume-role.arn --conf spark.sql.catalog.my_catalog.client.assume-role.tags.LakeFormationAuthorizedCaller

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

写入时复制 读取时合并

快照查询-Spark SQL

读取优化查询-Spark SQL

递增查询

时间旅行查询

元数据表

DMLINSERT命令

DDL命令

Spark Datasource 查询

Spark Datasource 写入