使用 Amazon EMR 存取 Amazon S3 Tables - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 7.5 版或更新版本支援 S3 Tables。

在 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。

先決條件
  • AmazonS3TablesFullAccess 政策連接至您用於 Amazon EMR 的 IAM 角色。

設定 Amazon EMR 叢集以使用 查詢資料表 Spark
  1. 使用下列組態建立叢集。若要使用此範例,請以您自己的資訊取代 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"} }]
  2. 使用 SSH 連線至 Spark 主節點。

  3. 若要為連線至資料表儲存貯體的 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
  4. 使用 Spark SQL 查詢資料表。如需範例查詢,請參閱使用 Spark SQL 查詢 S3 資料表

AWS analytics services integration

使用 AWS 分析服務整合在 Amazon EMR Spark上使用 查詢資料表時,需要下列先決條件。

先決條件
設定 Amazon EMR 叢集以使用 查詢資料表 Spark
  1. 使用下列組態建立叢集。若要使用此範例,請將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"} }]
  2. 使用 SSH 連線至 Spark 主節點。

  3. 輸入下列命令,為連線至資料表的 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
  4. 使用 Spark SQL 查詢資料表。如需範例查詢,請參閱使用 Spark SQL 查詢 S3 資料表

注意

如果您使用 DROP TABLE PURGE命令搭配 Amazon EMR:

  • Amazon EMR 7.5 版

    將 Spark 組態spark.sql.catalog.your-catalog-name.cache-enabled設定為 false。如果此組態設定為 true,請在新的工作階段或應用程式中執行命令,以便停用資料表快取。

  • Amazon EMR 版本高於 7.5

    不支援 DROP TABLE。您可以使用 S3 Tables DeleteTable REST API 來刪除資料表。