本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
具有精细访问控制功能的 Apache Iceberg
当你使用 Spark SQL 读取和写入数据时,亚马逊 EMR 6.15.0 及更高版本支持基于 Amazon Lake Formation Apache Iceberg 的精细访问控制。Amazon EMR 支持使用 Apache Iceberg 进行表、行、列和单元格级别的访问控制。使用此功能,您可以对 copy-on-write表运行快照查询,以在给定的提交或压缩时刻查询表的最新快照。
如果要使用 Iceberg 格式,请设置以下配置。
替换为 Iceberg 表所在的 Amazon S3 路径,并将区域和账户 ID 占位符替换为您自己的值。DB_LOCATION
spark-sql \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=s3://
DB_LOCATION
--conf spark.sql.catalog.spark_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO --conf spark.sql.catalog.spark_catalog.glue.account-id=ACCOUNT_ID
--conf spark.sql.catalog.spark_catalog.glue.id=ACCOUNT_ID
--conf spark.sql.catalog.spark_catalog.client.region=AWS_REGION
如果要在早期的 EMR 版本上使用 Iceberg 格式,请改用以下命令:
spark-sql \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension --conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.spark_catalog.warehouse=s3://
DB_LOCATION
--conf spark.sql.catalog.spark_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO --conf spark.sql.catalog.spark_catalog.glue.account-id=ACCOUNT_ID
--conf spark.sql.catalog.spark_catalog.glue.id=ACCOUNT_ID
--conf spark.sql.catalog.spark_catalog.client.assume-role.region=AWS_REGION
--conf spark.sql.catalog.spark_catalog.lf.managed=true
以下支持矩阵列出了 Apache Iceberg 及 Lake Formation 的部分核心功能:
写入时复制 | 读取时合并 | |
---|---|---|
快照查询 - Spark SQL |
✓ |
✓ |
读取优化查询 - Spark SQL |
✓ |
✓ |
递增查询 |
✓ |
✓ |
时间旅行查询 |
✓ |
✓ |
元数据表 |
✓ |
✓ |
DML |
✓ |
✓ |
DDL 命令 |
||
Spark Datasource 查询 |
||
Spark Datasource 写入 |