Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
使用 Amazon EMR 访问 Amazon S3 表类数据存储服务
Amazon EMR(以前称为 Amazon Elastic MapReduce)是一个托管式集群平台,可简化在 Amazon 上运行大数据框架(如 Apache Hadoop 和 Apache Spark)的过程,以处理和分析海量数据。使用这些框架和相关的开源项目,您可以处理用于分析目的的数据和业务情报工作负载。Amazon EMR 还可让您转换大量数据,并将数据移入/移出其它 Amazon 数据存储和数据库。
通过在 Spark 会话中连接到表存储桶,您可以使用 Amazon EMR 中的 Apache Iceberg 集群来处理 S3 表类数据存储服务。要连接到 Amazon EMR 中的表存储桶,可以通过 Amazon Glue Data Catalog 使用 Amazon 分析服务集成,也可以使用适用于 Apache Iceberg 的开源 Amazon S3 表类数据存储服务目录客户端目录。
在 Amazon EMR Iceberg 集群上使用 Spark 连接到 S3 表存储桶
在此过程中,您设置为 Apache Iceberg 配置的 Amazon EMR 集群,然后启动连接到表存储桶的 Spark 会话。您可以通过 Amazon Glue 使用 Amazon 分析服务集成来设置此项,也可以使用适用于 Apache Iceberg 的开源 Amazon S3 表类数据存储服务目录客户端目录。有关客户端目录的信息,请参阅使用 Amazon S3 表类数据存储服务 Iceberg REST 端点访问表。
从以下选项中选择在 Amazon EMR 中使用表的方法。
- Amazon S3 Tables Catalog for Apache Iceberg
-
使用适用于 Apache Iceberg 的 Amazon S3 表类数据存储服务目录在 Amazon EMR 上通过 Spark 查询表需要满足以下先决条件。
设置 Amazon EMR 集群以使用 Spark 查询表
使用以下配置创建集群。要使用此示例,请将 user input placeholders
替换为您自己的信息。
aws emr create-cluster --release-label emr-7.5.0 \
--applications Name=Spark \
--configurations file://configurations.json \
--region us-east-1
\
--name My_Spark_Iceberg_Cluster \
--log-uri s3://amzn-s3-demo-bucket
/ \
--instance-type m5.xlarge \
--instance-count 2 \
--service-role EMR_DefaultRole
\
--ec2-attributes \
InstanceProfile=EMR_EC2_DefaultRole
,SubnetId=subnet-1234567890abcdef0
,KeyName=my-key-pair
configurations.json
:
[{
"Classification":"iceberg-defaults",
"Properties":{"iceberg.enabled":"true"}
}]
-
Connect to the Spark primary node using SSH.
-
要初始化 Iceberg 的连接到表存储桶的 Spark 会话,请输入以下命令。将 user input placeholders
替换为表存储桶 ARN。
spark-shell \
--packages software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.3 \
--conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog \
--conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:us-east-1
:111122223333
:bucket/amzn-s3-demo-bucket1
\
--conf spark.sql.defaultCatalog=s3tablesbucket \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
-
使用 Spark SQL 查询表。有关示例查询,请参阅使用 Spark SQL 查询 S3 表。
- Amazon analytics services integration
-
使用 Amazon 分析服务集成在 Amazon EMR 上通过 Spark 查询表需要满足以下先决条件。
设置 Amazon EMR 集群以使用 Spark 查询表
使用以下配置创建集群。要使用此示例,请将 user input placeholder
值替换为您自己的信息。
aws emr create-cluster --release-label emr-7.5.0 \
--applications Name=Spark \
--configurations file://configurations.json \
--region us-east-1
\
--name My_Spark_Iceberg_Cluster \
--log-uri s3://amzn-s3-demo-bucket
/ \
--instance-type m5.xlarge \
--instance-count 2 \
--service-role EMR_DefaultRole
\
--ec2-attributes \
InstanceProfile=EMR_EC2_DefaultRole
,SubnetId=subnet-1234567890abcdef0
,KeyName=my-key-pair
configurations.json
:
[{
"Classification":"iceberg-defaults",
"Properties":{"iceberg.enabled":"true"}
}]
-
Connect to the Spark primary node using SSH.
-
输入以下命令来初始化 Iceberg 的连接到表的 Spark 会话。将 user
input placeholders
替换为您自己的信息。
spark-shell \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.defaultCatalog=s3tables \
--conf spark.sql.catalog.s3tables=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.s3tables.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog \
--conf spark.sql.catalog.s3tables.client.region=us-east-1
\
--conf spark.sql.catalog.s3tables.glue.id=111122223333
-
使用 Spark SQL 查询表。有关示例查询,请参阅使用 Spark SQL 查询 S3 表
如果您在 Amazon EMR 中使用 DROP TABLE PURGE
命令: