本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon EMR 存取 Amazon S3 Tables
Amazon EMR (先前稱為 Amazon Elastic MapReduce) 是一種受管叢集平台,可簡化在 上執行大數據架構,例如 Apache Hadoop和 Apache Spark, AWS 以處理和分析大量資料。使用這些架構和相關的開放原始碼專案,可以處理用於分析用途和商業智慧工作負載的資料。Amazon EMR 也可讓您轉換大量資料,並將大量資料移入和移出其他 AWS 資料存放區和資料庫。
您可以在 Amazon EMR 中使用 Apache Iceberg 叢集,透過連線至 Spark 工作階段中的資料表儲存貯體來使用 S3 資料表。若要連線到 Amazon EMR 中的資料表儲存貯體,您可以透過 使用 AWS 分析服務整合 AWS Glue Data Catalog,也可以使用開放原始碼 Amazon S3 Tables Catalog 做為Apache Iceberg用戶端目錄。
在 Amazon EMR Iceberg 叢集上使用 Spark 連線至 S3 資料表儲存貯體
在此程序中,您會設定為 設定的 Amazon EMR 叢集,Apache Iceberg然後啟動連線至資料表儲存貯體的Spark工作階段。您可以使用透過 整合的 AWS 分析服務來設定此項目 AWS Glue,也可以使用開放原始碼 Amazon S3 Tables Catalog for Apache Iceberg client Catalog。如需用戶端目錄的相關資訊,請參閱使用 Amazon S3 TablesIceberg REST 端點存取資料表。
從下列選項中選擇搭配 Amazon EMR 使用資料表的方法。
- Amazon S3 Tables Catalog for Apache Iceberg
-
使用適用於 的 Amazon S3 Tables Catalog 在 Amazon EMR Spark上查詢 資料表時,需要下列先決條件Apache Iceberg。
設定 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"}
}]
-
使用 SSH 連線至 Spark 主節點。
-
若要為連線至資料表儲存貯體的 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 資料表。
- AWS analytics services integration
-
使用 AWS 分析服務整合在 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"}
}]
-
使用 SSH 連線至 Spark 主節點。
-
輸入下列命令,為連線至資料表的 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 資料表
如果您使用 DROP TABLE PURGE
命令搭配 Amazon EMR: