

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengakses tabel Amazon S3 dengan Amazon EMR
<a name="s3-tables-integrating-emr"></a>

Amazon EMR (sebelumnya disebut Amazon Elastic MapReduce) adalah platform cluster terkelola yang menyederhanakan menjalankan kerangka kerja data besar, seperti Apache Hadoop danApache Spark, AWS untuk memproses dan menganalisis sejumlah besar data. Dengan menggunakan kerangka kerja ini dan proyek sumber terbuka terkait, Anda dapat memproses data untuk tujuan analitik dan beban kerja intelijen bisnis. Amazon EMR juga memungkinkan Anda mengubah dan memindahkan sejumlah besar data ke dalam dan keluar dari penyimpanan AWS data dan database lainnya.

Anda dapat menggunakan Apache Iceberg cluster di Amazon EMR untuk bekerja dengan tabel S3 dengan menghubungkan ke bucket tabel dalam satu sesi. Spark Untuk menyambung ke bucket tabel di Amazon EMR, Anda dapat menggunakan AWS integrasi layanan analitik AWS Glue Data Catalog melalui, atau Anda dapat menggunakan Katalog Tabel Amazon S3 open source untuk katalog klien. Apache Iceberg

**catatan**  
Tabel S3 didukung di [Amazon EMR versi](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html) 7.5 atau lebih tinggi.

## Menghubungkan ke bucket tabel S3 dengan Spark pada cluster EMR Amazon Iceberg
<a name="emr-setup-cluster-spark"></a>

Dalam prosedur ini, Anda menyiapkan kluster EMR Amazon yang dikonfigurasi untuk Apache Iceberg dan kemudian meluncurkan Spark sesi yang terhubung ke bucket tabel Anda. Anda dapat mengaturnya menggunakan integrasi layanan AWS analitik AWS Glue, atau Anda dapat menggunakan Katalog Tabel Amazon S3 open source untuk katalog Apache Iceberg klien. Untuk informasi tentang katalog klien, lihat[Mengakses tabel menggunakan endpoint Amazon S3 Iceberg REST Tables](s3-tables-integrating-open-source.md). 

Pilih metode Anda menggunakan tabel dengan Amazon EMR dari opsi berikut.

------
#### [ Amazon S3 Tables Catalog for Gunung Es Apache ]

Prasyarat berikut diperlukan untuk menanyakan tabel dengan EMR Amazon menggunakan Spark Katalog Tabel Amazon S3 untuk. Apache Iceberg

Untuk versi terbaru dari katalog klien JAR, lihat repositori [ GitHub s3-tables-catalog](https://github.com/awslabs/s3-tables-catalog).

**Prasyarat**
+ Lampirkan `AmazonS3TablesFullAccess` kebijakan ke peran IAM yang Anda gunakan untuk Amazon EMR.

**Untuk menyiapkan kluster EMR Amazon ke tabel kueri dengan Spark**

1. Buat cluster dengan konfigurasi berikut. Untuk menggunakan contoh ini, ganti `user input placeholders`dengan informasi Anda sendiri.

   ```
   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"}
   }]
   ```

1. [Connect ke node Spark utama menggunakan SSH](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-connect-master-node-ssh.html#emr-connect-cli).

1. Untuk menginisialisasi Spark sesi Iceberg yang terhubung ke keranjang tabel Anda, masukkan perintah berikut. Ganti `user input placeholders` dengan ember meja ARN Anda.

   ```
   spark-shell \
   --packages software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.8 \
   --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
   ```

1. Kueri tabel Anda dengan Spark SQL. Misalnya kueri, lihat[Menanyakan tabel S3 dengan SQL Spark](s3-tables-client-catalog.md#query-with-spark).

------
#### [ AWS analytics services integration ]

Prasyarat berikut diperlukan untuk menanyakan tabel dengan EMR Spark Amazon menggunakan integrasi layanan analitik. AWS 

**Prasyarat**
+ [Integrasikan bucket tabel Anda dengan layanan AWS analitik](s3-tables-integrating-aws.md).
+ Buat peran layanan default untuk Amazon EMR ()`EMR_DefaultRole_V2`. Untuk detailnya, lihat [Peran layanan untuk Amazon EMR (peran EMR)](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-iam-role.html).
+ Buat profil instans Amazon EC2 untuk Amazon EMR (). `EMR_EC2_DefaultRole` Untuk detailnya, lihat [Peran layanan untuk instans EC2 cluster (profil instans EC2](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-iam-role-ec2.html)). 
  + Lampirkan `AmazonS3TablesFullAccess` kebijakan ke`EMR_EC2_DefaultRole`.

**Untuk menyiapkan kluster EMR Amazon ke tabel kueri dengan Spark**

1. Buat cluster dengan konfigurasi berikut. Untuk menggunakan contoh ini, ganti `user input placeholder` nilai dengan informasi Anda sendiri.

   ```
   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"}
   }]
   ```

1. [Connect ke node Spark utama menggunakan SSH](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-connect-master-node-ssh.html#emr-connect-cli).

1. Masukkan perintah berikut untuk menginisialisasi Spark sesi Iceberg yang terhubung ke tabel Anda. Ganti nama `user input placeholders` untuk Region, ID akun, dan nama bucket tabel dengan informasi Anda sendiri.

   ```
   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:s3tablescatalog/amzn-s3-demo-table-bucket
   ```

1. Kueri tabel Anda dengan Spark SQL. Misalnya kueri, lihat [Menanyakan tabel S3 dengan SQL Spark](s3-tables-client-catalog.md#query-with-spark)

------

**catatan**  
Jika Anda menggunakan `DROP TABLE PURGE` perintah dengan Amazon EMR:  
Amazon EMR versi 7.5  
Setel konfigurasi `spark.sql.catalog.your-catalog-name.cache-enabled` Spark ke. `false` Jika konfigurasi ini diatur ke`true`, jalankan perintah dalam sesi atau aplikasi baru sehingga cache tabel tidak diaktifkan.
Amazon EMR versi lebih tinggi dari 7,5  
`DROP TABLE` tidak didukung. Anda dapat menggunakan S3 Tables `DeleteTable` REST API untuk menghapus tabel.