

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

# Bekerja dengan pekerjaan di AWS Glue
<a name="author-glue-job"></a>

Bagian berikut memberikan informasi tentang pekerjaan ETL dan Ray di AWS Glue.

**Topics**
+ [AWS Glue versi](release-notes.md)
+ [Bekerja dengan pekerjaan Spark di AWS Glue](etl-jobs-section.md)
+ [Bekerja dengan pekerjaan Ray di AWS Glue](ray-jobs-section.md)
+ [Mengonfigurasi properti pekerjaan untuk pekerjaan shell Python di AWS Glue](add-job-python.md)
+ [Pemantauan AWS Glue](monitor-glue.md)

# AWS Glue versi
<a name="release-notes"></a>

Anda dapat mengonfigurasi parameter AWS Glue versi saat menambahkan atau memperbarui pekerjaan. AWS Glue Versi ini menentukan versi Apache Spark dan Python yang mendukung. AWS Glue Versi Python menunjukkan versi yang didukung untuk pekerjaan jenis Spark. Tabel berikut mencantumkan versi AWS Glue yang tersedia, versi Spark dan Python yang sesuai, dan perubahan fungsi lainnya.

Anda dapat menggunakan [upgrade Generative AI untuk Apache Spark untuk](upgrade-analysis.md) meningkatkan pekerjaan Glue ETL Anda dari versi Glue yang lebih lama (≥ 2.0) ke versi Glue terbaru.

## AWS Glue versi
<a name="release-notes-versions"></a>

<a name="table-glue-versions"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/release-notes.html)

**catatan**  
Versi Glue berikut mendukung versi ini dari PythonShell:  
PythonShell v3.6 didukung dalam Glue versi 1.0.
PythonShell v3.9 didukung di Glue versi 3.0.
Selain itu, titik akhir dev hanya didukung di Glue versi 1.0, dan 0.9.

# AWS Gluekebijakan dukungan versi
<a name="glue-version-support-policy"></a>

AWS Glueadalah layanan integrasi data tanpa server yang memudahkan untuk menemukan, menyiapkan, dan menggabungkan data untuk analitik, pembelajaran mesin, dan pengembangan aplikasi. *AWS GluePekerjaan* berisi logika bisnis yang melakukan pekerjaan integrasi dataAWS Glue. Ada tiga jenis pekerjaan diAWS Glue: *Spark (batch dan streaming)*, *Ray* dan *Python shell*. Saat Anda menentukan pekerjaan Anda, Anda menentukan AWS Glue versi, yang mengonfigurasi versi di lingkungan runtime Spark, Ray, atau Python yang mendasarinya. Misalnya: pekerjaan Spark AWS Glue versi 5.0 mendukung Spark 3.5.4 dan Python 3.11.

## Kebijakan Support
<a name="glue-version-support-policy-milestones"></a>

AWS Glue Versi dibangun di sekitar kombinasi sistem operasi, bahasa pemrograman, dan pustaka perangkat lunak yang tunduk pada pemeliharaan dan pembaruan keamanan. AWS Glue Kebijakan dukungan versi adalah mengakhiri dukungan untuk versi ketika komponen utama versi mencapai akhir dukungan jangka panjang komunitas (LTS) dan pembaruan keamanan tidak lagi tersedia. AWS Glue Kebijakan dukungan versi mencakup status berikut: 

**End of Support (EOS) -** Saat sebuah AWS Glue versi mencapai EOS:
+ AWS Glue tidak akan lagi menerapkan patch keamanan atau pembaruan lainnya ke versi EOS.
+ AWS Glue lowongan pada versi EOS tidak memenuhi syarat untuk mendapatkan dukungan teknis.
+ AWS Glue mungkin tidak dihormati SLAs ketika pekerjaan dijalankan pada versi EOS.

**End of Life (EOL) -** Ketika sebuah AWS Glue versi mencapai EOL:
+ Anda tidak dapat lagi membuat AWS Glue pekerjaan baru atau sesi interaktif pada versi EOL.
+ Anda tidak dapat lagi memulai pekerjaan berjalan pada AWS Glue versi ini.
+ AWS Glue akan menghentikan pekerjaan yang ada dan sesi interaktif pada versi EOL.
+ Versi EOL akan dihapus dari AWS Glue SDKs dan APIs.

AWS GlueVersi berikut telah mencapai akhir dukungan dan tidak akan lagi tersedia setelah tanggal akhir masa pakai. Perubahan status dukungan versi dimulai pada tengah malam (zona waktu Pasifik) pada tanggal yang ditentukan.


| **Jenis** | **Versi Glue** | **Akhir dari dukungan** | **Akhir hidup** | 
| --- | --- | --- | --- | 
| **Jenis** | **Versi Python** | **Akhir dari dukungan** | **Akhir hidup** | 
| --- | --- | --- | --- | 
| **Jenis** | **Versi notebook** | **Akhir dari dukungan** | **Akhir hidup** | 
| --- | --- | --- | --- | 
| Spark | Glue versi 0.9 (Spark 2.2, Scala 2, Python 2) | 6/1/2022 | 4/1/2026 | 
| Spark | Glue versi 1.0 (Spark 2.4, Python 2) | 6/1/2022 | 4/1/2026 | 
| Spark | Glue versi 1.0 (Spark 2.4, Scala 2, Python 3) | 9/30/2022 | 4/1/2026 | 
| Spark | Glue versi 2.0 (Spark 2.4, Python 3) | 1/31/2024 | 4/1/2026 | 
| Cangkang Python | Python 2 (AWS Glue Versi 1.0) | 6/1/2022 | 4/1/2026 | 
| Cangkang Python | PythonShell 3.6 (Glue versi 1.0) | 3/31/2026 | TA | 
| Titik akhir pengembangan | Notebook Zeppelin | 9/30/2022 | TA | 

**catatan**  
 Membuat pekerjaan AWS Glue Python Shell 3.6 baru tidak akan diizinkan setelah akhir dukungan tercapai pada 31 Maret 2026, tetapi Anda dapat terus memperbarui dan menjalankan pekerjaan yang ada. Namun, pekerjaan yang berjalan pada versi yang dihentikan tidak memenuhi syarat untuk mendapatkan dukungan teknis. AWS Glue tidak akan menerapkan patch keamanan atau pembaruan lainnya ke versi yang dihentikan. AWS Glue juga tidak akan menghormati SLAs ketika pekerjaan dijalankan pada versi yang dihentikan. 

AWSsangat menyarankan agar Anda memigrasikan pekerjaan Anda ke versi yang didukung.

Untuk informasi tentang memigrasi pekerjaan Spark Anda ke AWS Glue versi terbaru, lihat [Memigrasi AWS Glue pekerjaan ke AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-51.html) versi 5.1. 

Untuk memigrasikan pekerjaan shell Python Anda ke versi terbaru: AWS Glue
+ Di konsol, pilih`Python 3 (Glue Version 4.0)`.
+ Di [CreateJob](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateJob.html)/[UpdateJob](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateJob.html)API, atur `GlueVersion` parameter ke`2.0`, dan `PythonVersion` ke `3` di bawah `Command` parameter. `GlueVersion`Konfigurasi tidak memengaruhi perilaku pekerjaan shell Python, jadi tidak ada keuntungan untuk menambah. `GlueVersion`
+ Anda perlu membuat skrip pekerjaan Anda kompatibel dengan Python 3.

# Migrasi AWS Glue untuk pekerjaan Spark ke versi 5.1 AWS Glue
<a name="migrating-version-51"></a>

Topik ini menjelaskan perubahan antara AWS Glue versi 0.9, 1.0, 2.0, 3.0, 4.0 dan 5.0 untuk memungkinkan Anda memigrasikan aplikasi Spark dan pekerjaan ETL ke 5.1. AWS Glue Ini juga menjelaskan fitur di AWS Glue 5.1 dan keuntungan menggunakannya. 

Untuk menggunakan fitur ini dengan pekerjaan AWS Glue ETL Anda, pilih **5.1** `Glue version` saat membuat pekerjaan Anda.

**Topics**
+ [Fitur baru](#migrating-version-51-features)
+ [Tindakan untuk bermigrasi ke 5.1 AWS Glue](#migrating-version-51-actions)
+ [Daftar periksa migrasi](#migrating-version-51-checklist)
+ [Migrasi dari AWS Glue 5.0 ke AWS Glue 5.1](#migrating-version-51-from-50)
+ [Migrasi dari AWS Glue Versi Lama ke 5.1 AWS Glue](#migrating-older-versions-to-51)
+ [Konektor dan migrasi driver JDBC untuk 5.1 AWS Glue](#migrating-version-51-connector-driver-migration)

## Fitur baru
<a name="migrating-version-51-features"></a>

Bagian ini menjelaskan fitur dan keunggulan baru AWS Glue versi 5.1.
+ Pembaruan Apache Spark dari 3.5.4 di AWS Glue 5.0 ke 3.5.6 di 5.1. AWS Glue 
+ Format Tabel Terbuka (OTF) diperbarui ke Hudi 1.0.2, Iceberg 1.10.0, dan Delta Lake 3.3.2
+ **Iceberg Materialized Views** - Buat dan kelola Iceberg Materialized Views (MV). Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/introducing-apache-iceberg-materialized-views-in-aws-glue-data-catalog/) 
+ **Iceberg format versi 3.0** - Memperluas tipe data dan struktur metadata yang ada untuk menambahkan kemampuan baru. Untuk informasi lebih lanjut, lihat Spesifikasi [Tabel Gunung Es](https://iceberg.apache.org/spec/). 
+ **Akses Tabel Penuh Hudi - Kontrol Akses** Tabel Penuh (FTA) untuk Apache Hudi di Apache Spark berdasarkan kebijakan Anda yang ditentukan dalam. AWS Lake Formation Fitur ini memungkinkan operasi baca dan tulis dari pekerjaan AWS Glue ETL Anda pada tabel AWS Lake Formation terdaftar ketika peran pekerjaan memiliki akses tabel penuh.
+ **Dukungan kontrol akses halus (FGAC) asli Spark menggunakan AWS Lake Formation- DDL/DML operasi (seperti CREATE, ALTER, DELETE, DROP)** dengan kontrol akses berbutir halus untuk tabel Apache Hive, Apache Iceberg, dan Delta Lake yang terdaftar di. AWS Lake Formation
+ **Konteks audit untuk pekerjaan Spark** - Konteks audit untuk pekerjaan AWS Glue ETL akan tersedia untuk AWS Glue dan panggilan AWS Lake Formation API di AWS CloudTrail log.

**Masalah dan Keterbatasan yang Diketahui**  
Perhatikan masalah dan batasan yang diketahui berikut ini:
+ Dukungan terbatas untuk klausa tampilan SQL untuk pembuatan tampilan terwujud, penulisan ulang kueri, dan penyegaran tambahan. Rincian lebih lanjut dapat ditemukan di halaman dokumentasi fitur [Iceberg Materialized Views](https://docs.aws.amazon.com/lake-formation/latest/dg/materialized-views.html#materialized-views-considerations-limitations) 
+ **Hudi FTA menulis** require using HoodieCredentialedHadoopStorage for credential vending selama eksekusi pekerjaan. Atur konfigurasi berikut saat menjalankan pekerjaan Hudi:

  `hoodie.storage.class=org.apache.spark.sql.hudi.storage.HoodieCredentialedHadoopStorage` 
+ Dukungan penulisan Hudi FTA hanya berfungsi dengan konfigurasi Hudi default. Pengaturan Hudi khusus atau non-default mungkin tidak sepenuhnya didukung dan dapat mengakibatkan perilaku yang tidak terduga. Pengelompokan untuk tabel Hudi Merge-On-Read (MOR) juga tidak didukung dalam mode tulis FTA.

**Melanggar perubahan**  
Perhatikan perubahan yang melanggar berikut:
+  Sistem file S3A telah menggantikan EMRFS sebagai konektor S3 default. Untuk informasi tentang cara bermigrasi, lihat[Migrasi dari AWS Glue 5.0 ke AWS Glue 5.1](#migrating-version-51-from-50). 

## Tindakan untuk bermigrasi ke 5.1 AWS Glue
<a name="migrating-version-51-actions"></a>

Untuk pekerjaan yang ada, ubah `Glue version` dari versi sebelumnya ke `Glue 5.1` dalam konfigurasi pekerjaan.
+ Di AWS Glue Studio, pilih `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3` di`Glue version`.
+ Di API, pilih `GlueVersion` parameter **5.1** dalam operasi [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob)API.

Untuk pekerjaan baru, pilih `Glue 5.1` kapan Anda membuat pekerjaan.
+ Di konsol, pilih `Spark 3.5.6, Python 3 (Glue Version 5.1) or Spark 3.5.6, Scala 2 (Glue Version 5.1)` di`Glue version`.
+ Di AWS Glue Studio, pilih `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3` di`Glue version`.
+ Di API, pilih `GlueVersion` parameter **5.1** dalam operasi [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob)API.

Untuk melihat log peristiwa Spark AWS Glue 5.1 yang berasal dari AWS Glue 2.0 atau sebelumnya, [luncurkan server riwayat Spark yang ditingkatkan untuk penggunaan AWS GlueCloudFormation 5.1](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html) atau Docker.

## Daftar periksa migrasi
<a name="migrating-version-51-checklist"></a>

Tinjau daftar periksa ini untuk migrasi:
+ [Python] Perbarui referensi boto dari 1,34 menjadi 1,40.

## Migrasi dari AWS Glue 5.0 ke AWS Glue 5.1
<a name="migrating-version-51-from-50"></a>

Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 5.0 akan ada di AWS Glue 5.1. Perhatikan perubahan berikut saat bermigrasi:
+ Dalam AWS Glue 5.1, sistem file S3A telah menggantikan EMRFS sebagai konektor S3 default. Jika keduanya `spark.hadoop.fs.s3a.endpoint` dan tidak `spark.hadoop.fs.s3a.endpoint.region` disetel, wilayah default yang digunakan oleh S3A adalah. `us-east-2` Hal ini dapat menyebabkan masalah, seperti kesalahan batas waktu unggah S3, terutama untuk pekerjaan VPC. Untuk mengurangi masalah yang disebabkan oleh perubahan ini, atur konfigurasi `spark.hadoop.fs.s3a.endpoint.region` Spark saat menggunakan sistem file S3A di 5.1. AWS Glue 
+ Untuk terus menggunakan EMRFS alih-alih S3A, atur konfigurasi percikan berikut:

  ```
      --conf spark.hadoop.fs.s3.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.AbstractFileSystem.s3.impl=org.apache.hadoop.fs.s3.EMRFSDelegate
  ```

Lihat dokumentasi migrasi Spark:
+ [Panduan Migrasi: Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [Panduan Migrasi: SQL, Datasets dan DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [Panduan Migrasi: Streaming Terstruktur](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [Meningkatkan PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## Migrasi dari AWS Glue Versi Lama ke 5.1 AWS Glue
<a name="migrating-older-versions-to-51"></a>
+ Untuk langkah migrasi yang terkait dengan AWS Glue 4.0 ke AWS Glue 5.0, lihat [Migrasi dari AWS Glue 4.0 ke AWS Glue 5.0](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-40).
+ Untuk langkah migrasi yang terkait dengan AWS Glue 3.0 ke AWS Glue 5.0, lihat [Memigrasi dari AWS Glue 3.0 ke AWS Glue 5.0](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-30).
+ Untuk langkah migrasi yang terkait dengan AWS Glue 2.0 ke AWS Glue 5.0 dan daftar perbedaan migrasi antara AWS Glue versi 2.0 dan 4.0, lihat [Migrasi dari AWS Glue 2.0 ke AWS Glue 5.0](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-20). 

## Konektor dan migrasi driver JDBC untuk 5.1 AWS Glue
<a name="migrating-version-51-connector-driver-migration"></a>

Untuk versi JDBC dan konektor data lake yang ditingkatkan, lihat:
+ [Lampiran B: Peningkatan driver JDBC](#migrating-version-51-appendix-jdbc-driver)
+ [Lampiran C: Peningkatan konektor](#migrating-version-51-appendix-connector)
+ [Lampiran D: Upgrade format tabel terbuka](#migrating-version-51-appendix-open-table-formats)

Perubahan berikut berlaku untuk upgrade versi OTF yang diidentifikasi [Lampiran D: Upgrade format tabel terbuka](#migrating-version-51-appendix-open-table-formats) untuk AWS Glue 5.1.

**Apache Hudi**  
Perhatikan perubahan berikut:
+ Support akses baca dan tulis FTA pada tabel terdaftar Lake Formation.

**Gunung Es Apache**  
Perhatikan perubahan berikut:
+ Dukungan format Iceberg versi 3. Fitur-fitur berikut didukung:
  + Transformasi multi-argumen untuk partisi dan penyortiran.
  + Pelacakan Garis Silsilah Baris.
  + Vektor penghapusan. Pelajari lebih lanjut di [posting blog](https://aws.amazon.com/blogs/big-data/unlock-the-power-of-apache-iceberg-v3-deletion-vectors-on-amazon-emr/) 
  + Kunci enkripsi tabel.
  + Dukungan nilai default untuk kolom.
+ Support Spark-native FGAC menulis pada tabel terdaftar. AWS Lake Formation 
+ Athena SQL kompatibilitas - Tidak dapat membaca tabel Iceberg V3 yang dibuat oleh EMR Spark karena kesalahan: `GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3`

**Danau Delta**  
Perhatikan perubahan berikut:
+ Support akses baca dan tulis FTA pada tabel terdaftar Lake Formation.

### Lampiran A: Peningkatan ketergantungan penting
<a name="migrating-version-51-appendix-dependencies"></a>

Berikut ini adalah peningkatan ketergantungan:


| Dependensi | Versi dalam AWS Glue 5.1 | Versi dalam AWS Glue 5.0 | Versi dalam AWS Glue 4.0 | Versi dalam AWS Glue 3.0 | Versi dalam AWS Glue 2.0 | Versi dalam AWS Glue 1.0 | 
| --- | --- | --- | --- | --- | --- | --- | 
| Java | 17 | 17 | 8 | 8 | 8 | 8 | 
| Spark | 3.5.6 | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.4.1 | 3.4.1 | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Skala | 2.12.18 | 2.12.18 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.15.2 | 2.15.2 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2.73.0 | 2.69.0 | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 | 
| JSON4 | 3.7.0-M11 | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Panah | 12.0.1 | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue Klien Katalog Data | 4.9.0 | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | N/A | 
| AWS SDK for Java | 2.35,5 | 2.29.52 | 1.12 | 1.12 |  |  | 
| Python | 3.11 | 3.11 | 3.10 | 3.7 | 2.7 & 3.6 | 2.7 & 3.6 | 
| Boto | 1.40.61 | 1.34.131 | 1.26 | 1.18 | 1.12 | N/A | 
| Konektor EMR DynamoDB | 5.7.0 | 5.6.0 | 4.16.0 |  |  |  | 

### Lampiran B: Peningkatan driver JDBC
<a name="migrating-version-51-appendix-jdbc-driver"></a>

Berikut ini adalah upgrade driver JDBC:


| Driver | Versi driver JDBC di 5.1 AWS Glue  | Versi driver JDBC di 5.0 AWS Glue  | Versi driver JDBC di 4.0 AWS Glue  | Versi driver JDBC di 3.0 AWS Glue  | Versi driver JDBC di versi sebelumnya AWS Glue  | 
| --- | --- | --- | --- | --- | --- | 
| MySQL | 8.0.33 | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 | 
| Microsoft SQL Server | 10.2.0 | 10.2.0 | 9.4.0 | 7.0.0 | 6.1.0 | 
| Database Oracle | 23.3.0.23.09 | 23.3.0.23.09 | 21.7 | 21.1 | 11.2 | 
| PostgreSQL | 42.7.3 | 42.7.3 | 42.3.6 | 42.2.18 | 42.1.0 | 
| Amazon Redshift |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.16  |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   | 
| SAP Hana | 2.20.17 | 2.20.17 | 2.17.12 |  |  | 
| Teradata | 20.00.00.33 | 20.00.00.33 | 20.00.00.06 |  |  | 

### Lampiran C: Peningkatan konektor
<a name="migrating-version-51-appendix-connector"></a>

Berikut ini adalah upgrade konektor:


| Driver | Versi konektor di AWS Glue 5.1 | Versi konektor di AWS Glue 5.0 | Versi konektor di AWS Glue 4.0 | Versi konektor di AWS Glue 3.0 | 
| --- | --- | --- | --- | --- | 
| Konektor EMR DynamoDB | 5.7.0 | 5.6.0 | 4.16.0 |  | 
| Amazon Redshift | 6.4.2 | 6.4.0 | 6.1.3 |  | 
| OpenSearch | 1.2.0 | 1.2.0 | 1.0.1 |  | 
| MongoDB | 10.3.0 | 10.3.0 | 10.0.4 | 3.0.0 | 
| Kepingan salju | 3.1.1 | 3.0.0 | 2.12.0 |  | 
| Google BigQuery | 0.32.2 | 0.32.2 | 0.32.2 |  | 
| AzureCosmos | 4.33.0 | 4.33.0 | 4.22.0 |  | 
| AzureSQL | 1.3.0 | 1.3.0 | 1.3.0 |  | 
| Vertica | 3.3.5 | 3.3.5 | 3.3.5 |  | 

### Lampiran D: Upgrade format tabel terbuka
<a name="migrating-version-51-appendix-open-table-formats"></a>

Berikut ini adalah upgrade format tabel terbuka:


| OTF | Versi konektor di AWS Glue 5.1 | Versi konektor di AWS Glue 5.0 | Versi konektor di AWS Glue 4.0 | Versi konektor di AWS Glue 3.0 | 
| --- | --- | --- | --- | --- | 
| Hudi | 1.0.2 | 0.15.0 | 0.12.1 | 0.10.1 | 
| Danau Delta | 3.3.2 | 3.3.0 | 2.1.0 | 1.0.0 | 
| Gunung es | 1.10.0 | 1.7.1 | 1.0.0 | 0.13.1 | 

# Migrasi AWS Glue untuk pekerjaan Spark ke versi 5.0 AWS Glue
<a name="migrating-version-50"></a>

Topik ini menjelaskan perubahan antara AWS Glue versi 0.9, 1.0, 2.0, 3.0, dan 4.0 untuk memungkinkan Anda memigrasikan aplikasi Spark dan pekerjaan ETL ke 5.0. AWS Glue Ini juga menjelaskan fitur di AWS Glue 5.0 dan keuntungan menggunakannya. 

Untuk menggunakan fitur ini dengan pekerjaan AWS Glue ETL Anda, pilih **5.0** `Glue version` saat membuat pekerjaan Anda.

**Topics**
+ [Fitur baru](#migrating-version-50-features)
+ [Tindakan untuk bermigrasi ke 5.0 AWS Glue](#migrating-version-50-actions)
+ [Daftar periksa migrasi](#migrating-version-50-checklist)
+ [AWS Glue 5.0 fitur](#migrating-version-50-features)
+ [Migrasi dari AWS Glue 4.0 ke AWS Glue 5.0](#migrating-version-50-from-40)
+ [Migrasi dari AWS Glue 3.0 ke 5.0 AWS Glue](#migrating-version-50-from-30)
+ [Migrasi dari AWS Glue 2.0 ke 5.0 AWS Glue](#migrating-version-50-from-20)
+ [Perubahan perilaku logging di AWS Glue 5.0](#enable-continous-logging-changes-glue-50)
+ [Konektor dan migrasi driver JDBC untuk 5.0 AWS Glue](#migrating-version-50-connector-driver-migration)

## Fitur baru
<a name="migrating-version-50-features"></a>

Bagian ini menjelaskan fitur dan keunggulan baru AWS Glue versi 5.0.
+ Pembaruan Apache Spark dari 3.3.0 di AWS Glue 4.0 ke 3.5.4 di 5.0. AWS Glue Lihat [Peningkatan utama dari Spark 3.3.0 ke Spark 3.5.4](#migrating-version-50-features-spark). 
+ Kontrol akses berbutir halus asli percikan (FGAC) menggunakan Lake Formation. Ini termasuk FGAC untuk tabel Iceberg, Delta dan Hudi. Untuk informasi selengkapnya, lihat [Menggunakan AWS Glue dengan AWS Lake Formation untuk kontrol akses berbutir halus](https://docs.aws.amazon.com/glue/latest/dg/security-lf-enable.html). 

  Perhatikan pertimbangan atau batasan berikut untuk FGAC asli SPARK:
  + Saat ini penulisan data tidak didukung
  + Menulis ke Gunung Es melalui `GlueContext` penggunaan Lake Formation membutuhkan penggunaan kontrol akses IAM sebagai gantinya

  Untuk daftar lengkap batasan dan pertimbangan saat menggunakan SPARK-native FGAC, lihat. [Pertimbangan dan batasan](security-lf-enable-considerations.md)
+ Support untuk Amazon S3 Access Grants sebagai solusi kontrol akses yang dapat diskalakan untuk data Amazon S3 Anda. AWS Glue Untuk informasi selengkapnya, lihat [Menggunakan Hibah Akses Amazon S3 dengan AWS Glue](security-s3-access-grants.md).
+ Format Tabel Terbuka (OTF) diperbarui ke Hudi 0.15.0, Iceberg 1.7.1, dan Delta Lake 3.3.0
+ Dukungan Amazon SageMaker Unified Studio.
+ Amazon SageMaker Lakehouse dan integrasi abstraksi data. Untuk informasi selengkapnya, lihat [Meminta katalog data metastore dari ETL AWS Glue](#migrating-version-50-features-metastore).
+ Support untuk menginstal pustaka Python tambahan menggunakan. `requirements.txt` Untuk informasi selengkapnya, lihat [Menginstal pustaka Python tambahan di AWS Glue 5.0 atau lebih tinggi menggunakan requirements.txt](aws-glue-programming-python-libraries.md#addl-python-modules-requirements-txt).
+ AWS Glue 5.0 mendukung garis keturunan data di Amazon. DataZone Anda dapat mengonfigurasi AWS Glue untuk mengumpulkan informasi silsilah secara otomatis selama pekerjaan Spark berjalan dan mengirim peristiwa silsilah untuk divisualisasikan di Amazon. DataZone Untuk informasi selengkapnya, lihat [Silsilah data di Amazon](https://docs.aws.amazon.com/datazone/latest/userguide/datazone-data-lineage.html). DataZone

  Untuk mengonfigurasinya di AWS Glue konsol, aktifkan **Hasilkan peristiwa garis keturunan**, dan masukkan ID DataZone domain Amazon Anda di tab **Detail pekerjaan**.  
![\[Tangkapan layar menunjukkan mengaktifkan garis keturunan DataZone tanggal Amazon untuk. AWS Glue\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/glue-50-data-lineage.png)

  Atau, Anda dapat memberikan parameter pekerjaan berikut (berikan ID DataZone domain Anda):
  + Kunci: `--conf`
  + Nilai:

    ```
    extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener
    —conf spark.openlineage.transport.type=amazon_datazone_api
    -conf spark.openlineage.transport.domainId=<your-domain-ID>
    ```
+ Pembaruan driver konektor dan JDBC. Untuk informasi selengkapnya, lihat [Lampiran B: Peningkatan driver JDBC](#migrating-version-50-appendix-jdbc-driver) dan [Lampiran C: Peningkatan konektor](#migrating-version-50-appendix-connector).
+ Pembaruan Java dari 8 hingga 17.
+ Peningkatan penyimpanan untuk AWS Glue `G.1X` dan `G.2X` pekerja dengan ruang disk meningkat menjadi 94GB dan 138GB masing-masing. Selain itu, jenis pekerja baru`G.12X`,`G.16X`, dan dioptimalkan memori`R.1X`, `R.2X``R.4X`, `R.8X` tersedia dalam AWS Glue versi 4.0 dan yang lebih baru. Untuk informasi selengkapnya, lihat [Lowongan](aws-glue-api-jobs-job.md) 
+ **Support untuk AWS SDK for Java, versi** 2 AWS Glue - 5.0 pekerjaan dapat menggunakan untuk Java [versi](https://github.com/aws/aws-sdk-java/tree/1.12.569) 1.12.569 [atau](https://github.com/aws/aws-sdk-java-v2/tree/2.28.8) 2.28.8 jika pekerjaan mendukung v2. AWS SDK for Java 2.x adalah penulisan ulang utama dari basis kode versi 1.x. Ini dibangun di atas Java 8\$1 dan menambahkan beberapa fitur yang sering diminta. Ini termasuk dukungan untuk I/O non-pemblokiran, dan kemampuan untuk menyambungkan implementasi HTTP yang berbeda saat runtime. Untuk informasi selengkapnya, termasuk Panduan Migrasi dari SDK for Java v1 ke v2, lihat AWS panduan [SDK for Java](https://docs.aws.amazon.com/sdk-for-java), versi 2.

**Melanggar perubahan**  
Perhatikan perubahan yang melanggar berikut:
+  Di AWS Glue 5.0, saat menggunakan sistem file S3A dan jika `fs.s3a.endpoint` dan `fs.s3a.endpoint.region` tidak disetel, wilayah default yang digunakan oleh S3A adalah `us-east-2`. Hal ini dapat menyebabkan masalah, seperti kesalahan batas waktu unggah S3, terutama untuk pekerjaan VPC. Untuk mengurangi masalah yang disebabkan oleh perubahan ini, setel konfigurasi Spark `fs.s3a.endpoint.region` saat menggunakan sistem file S3A di 5.0. AWS Glue 
+ Kontrol Akses Berbutir Halus Formasi Danau (FGAC)
  + AWS Glue 5.0 hanya mendukung FGAC asli Spark baru menggunakan Spark. DataFrames Itu tidak mendukung penggunaan FGAC. AWS Glue DynamicFrames
    + Penggunaan FGAC di 5.0 membutuhkan migrasi dari ke Spark AWS Glue DynamicFrames DataFrames
    + Jika Anda tidak memerlukan FGAC, maka tidak perlu bermigrasi ke Spark DataFrame dan GlueContext fitur, seperti bookmark pekerjaan dan predikat push down, akan terus berfungsi.
  + Pekerjaan dengan FGAC asli SPARK membutuhkan minimal 4 pekerja: satu driver pengguna, satu driver sistem, satu eksekutor sistem, dan satu eksekutor pengguna siaga.
  + Untuk informasi selengkapnya, lihat [Menggunakan AWS Glue dengan AWS Lake Formation untuk kontrol akses berbutir halus](https://docs.aws.amazon.com/glue/latest/dg/security-lf-enable.html). 
+ Akses Meja Lengkap Lake Formation (FTA)
  + AWS Glue 5.0 mendukung FTA dengan Spark-native DataFrames (baru) dan GlueContext DynamicFrames (warisan, dengan batasan)
  + FTA asli percikan
    + Jika skrip 4.0 digunakan GlueContext, migrasi ke menggunakan spark asli. 
    + Fitur ini terbatas pada tabel sarang dan gunung es
    + Untuk info selengkapnya tentang mengonfigurasi pekerjaan 5.0 untuk menggunakan Spark native FTA, lihat 
  + GlueContext DynamicFrame FTA
    + Tidak ada perubahan kode yang diperlukan
    + Fitur ini terbatas pada tabel non-OTF - tidak akan berfungsi dengan Iceberg, Delta Lake, dan Hudi.
+ Pembaca [CSV SIMD tervektor](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-csv-home.html#aws-glue-programming-etl-format-simd-csv-reader) tidak didukung.
+ [Pencatatan terus menerus](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging-enable.html) ke grup log keluaran tidak didukung. Gunakan grup `error` log sebagai gantinya.
+ Wawasan AWS Glue pekerjaan yang dijalankan `job-insights-rule-driver` sudah tidak digunakan lagi. Aliran `job-insights-rca-driver` log sekarang terletak di grup log kesalahan.
+  custom/marketplace Konektor berbasis Athena tidak didukung.
+ Adobe Marketo Engage, Iklan Facebook, Google Ads, Google Analytics 4, Google Sheets, Hubspot, Iklan Instagram, Interkom, Jira Cloud, Oracle, Salesforce, Salesforce Marketing Cloud NetSuite, Keterlibatan Akun Cloud Pemasaran Salesforce, SAP,, Slack, Iklan Snapchat, Stripe, Zendesk dan OData Zoho ServiceNow CRM konektor tidak didukung.
+ Properti log4j kustom tidak didukung di AWS Glue 5.0.

### Peningkatan utama dari Spark 3.3.0 ke Spark 3.5.4
<a name="migrating-version-50-features-spark"></a>

Perhatikan penyempurnaan berikut:
+ Klien Python untuk Spark Connect [(SPARK-39375)](https://issues.apache.org/jira/browse/SPARK-39375).
+ Menerapkan dukungan untuk nilai DEFAULT untuk kolom dalam tabel ([SPARK-38334](https://issues.apache.org/jira/browse/SPARK-38334)).
+ Dukungan “Referensi Alias Kolom Lateral” ([SPARK-27561](https://issues.apache.org/jira/browse/SPARK-27561)).
+ [Harden penggunaan SQLSTATE untuk kelas kesalahan (SPARK-41994).](https://issues.apache.org/jira/browse/SPARK-41994)
+ Aktifkan filter Bloom Bergabung secara default ([SPARK-38841](https://issues.apache.org/jira/browse/SPARK-38841)).
+ Skalabilitas Spark UI yang lebih baik dan stabilitas driver untuk aplikasi besar ([SPARK-41053](https://issues.apache.org/jira/browse/SPARK-41053)).
+ Pelacakan Kemajuan Async dalam Streaming Terstruktur ([SPARK-39591](https://issues.apache.org/jira/browse/SPARK-39591)).
+ [Pemrosesan stateful arbitrer Python dalam streaming terstruktur (SPARK-40434).](https://issues.apache.org/jira/browse/SPARK-40434)
+ [Peningkatan cakupan API Pandas ([SPARK-42882](https://issues.apache.org/jira/browse/SPARK-42882)) dan dukungan NumPy input di (SPARK-39405). PySpark ](https://issues.apache.org/jira/browse/SPARK-39405)
+ [Menyediakan profiler memori untuk fungsi yang PySpark ditentukan pengguna (SPARK-40281).](https://issues.apache.org/jira/browse/SPARK-40281)
+ Melaksanakan PyTorch distributor ([SPARK-41589](https://issues.apache.org/jira/browse/SPARK-41589)).
+ Publikasikan artefak SBOM ([SPARK-41893](https://issues.apache.org/jira/browse/SPARK-41893)).
+ Support IPv6 -only environment ([SPARK-39457](https://issues.apache.org/jira/browse/SPARK-39457)).
+ [Penjadwal K8s yang disesuaikan (Apache YuniKorn dan Volcano) GA (SPARK-42802).](https://issues.apache.org/jira/browse/SPARK-42802)
+ [Dukungan klien Scala dan Go di Spark Connect ([SPARK-42554) dan (SPARK-43351](https://issues.apache.org/jira/browse/SPARK-42554)).](https://issues.apache.org/jira/browse/SPARK-43351)
+ PyTorchDukungan ML terdistribusi berbasis untuk Spark Connect ([SPARK-42471](https://issues.apache.org/jira/browse/SPARK-42471)).
+ [Dukungan streaming terstruktur untuk Spark Connect dengan Python dan Scala (SPARK-42938).](https://issues.apache.org/jira/browse/SPARK-42938)
+ [Dukungan API Pandas untuk Klien Python Spark Connect (SPARK-42497).](https://issues.apache.org/jira/browse/SPARK-42497)
+ Perkenalkan Panah Python UDFs ([SPARK-40307](https://issues.apache.org/jira/browse/SPARK-40307)).
+ [Mendukung fungsi tabel yang ditentukan pengguna Python (SPARK-43798).](https://issues.apache.org/jira/browse/SPARK-43798)
+ Migrasikan PySpark kesalahan ke kelas kesalahan ([SPARK-42986](https://issues.apache.org/jira/browse/SPARK-42986)).
+ PySpark kerangka uji ([SPARK-44042](https://issues.apache.org/jira/browse/SPARK-44042)).
+ [Tambahkan dukungan untuk Datasketches HllSketch (SPARK-16484).](https://issues.apache.org/jira/browse/SPARK-16484)
+ Peningkatan fungsi SQL bawaan ([SPARK-41231](https://issues.apache.org/jira/browse/SPARK-41231)).
+ Klausul pengidentifikasi ([SPARK-43205](https://issues.apache.org/jira/browse/SPARK-43205)).
+ [Tambahkan fungsi SQL ke dalam Scala, Python dan R API (SPARK-43907).](https://issues.apache.org/jira/browse/SPARK-43907)
+ Tambahkan dukungan argumen bernama untuk fungsi SQL ([SPARK-43922](https://issues.apache.org/jira/browse/SPARK-43922)).
+ [Hindari tugas yang tidak perlu dijalankan kembali pada eksekutor yang dinonaktifkan hilang jika data acak dimigrasi (SPARK-41469).](https://issues.apache.org/jira/browse/SPARK-41469)
+ Terdistribusi ML<> spark connect ([SPARK-42471](https://issues.apache.org/jira/browse/SPARK-42471)).
+ DeepSpeed distributor ([SPARK-44264](https://issues.apache.org/jira/browse/SPARK-44264)).
+ [Terapkan checkpointing changelog untuk penyimpanan status RocksDB (SPARK-43421).](https://issues.apache.org/jira/browse/SPARK-43421)
+ Perkenalkan propagasi tanda air di antara operator ([SPARK-42376](https://issues.apache.org/jira/browse/SPARK-42376)).
+ Perkenalkan dropDuplicatesWithin Tanda Air ([SPARK-42931](https://issues.apache.org/jira/browse/SPARK-42931)).
+ [Peningkatan manajemen memori penyedia penyimpanan status RocksDB (SPARK-43311).](https://issues.apache.org/jira/browse/SPARK-43311)

## Tindakan untuk bermigrasi ke 5.0 AWS Glue
<a name="migrating-version-50-actions"></a>

Untuk pekerjaan yang ada, ubah `Glue version` dari versi sebelumnya ke `Glue 5.0` dalam konfigurasi pekerjaan.
+ Di AWS Glue Studio, pilih `Glue 5.0 - Supports Spark 3.5.4, Scala 2, Python 3` di`Glue version`.
+ Di API, pilih `GlueVersion` parameter **5.0** dalam operasi [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob)API.

Untuk pekerjaan baru, pilih `Glue 5.0` kapan Anda membuat pekerjaan.
+ Di konsol, pilih `Spark 3.5.4, Python 3 (Glue Version 5.0) or Spark 3.5.4, Scala 2 (Glue Version 5.0)` di`Glue version`.
+ Di AWS Glue Studio, pilih `Glue 5.0 - Supports Spark 3.5.4, Scala 2, Python 3` di`Glue version`.
+ Di API, pilih `GlueVersion` parameter **5.0** dalam operasi [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob)API.

Untuk melihat log peristiwa Spark AWS Glue 5.0 yang berasal dari AWS Glue 2.0 atau sebelumnya, [luncurkan server riwayat Spark yang ditingkatkan untuk AWS Glue 5.0 menggunakan CloudFormation](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html) atau Docker.

## Daftar periksa migrasi
<a name="migrating-version-50-checklist"></a>

Tinjau daftar periksa ini untuk migrasi:
+ Pembaruan Java 17
+ [Scala] Tingkatkan panggilan AWS SDK dari v1 ke v2
+ Migrasi Python 3.10 hingga 3.11
+ [Python] Perbarui referensi boto dari 1,26 ke 1,34

## AWS Glue 5.0 fitur
<a name="migrating-version-50-features"></a>

Bagian ini menjelaskan AWS Glue fitur secara lebih rinci.

### Meminta katalog data metastore dari ETL AWS Glue
<a name="migrating-version-50-features-metastore"></a>

Anda dapat mendaftarkan AWS Glue pekerjaan Anda untuk mengakses AWS Glue Data Catalog, yang membuat tabel dan sumber daya metastore lainnya tersedia untuk konsumen yang berbeda. Katalog Data mendukung hierarki multi-katalog, yang menyatukan semua data Anda di seluruh danau data Amazon S3. Ini juga menyediakan API metastore Hive dan API Apache Iceberg sumber terbuka untuk mengakses data. Fitur-fitur ini tersedia untuk AWS Glue dan layanan berorientasi data lainnya seperti Amazon EMR, Amazon Athena, dan Amazon Redshift.

Saat Anda membuat sumber daya di Katalog Data, Anda dapat mengaksesnya dari mesin SQL apa pun yang mendukung Apache Iceberg REST API. AWS Lake Formation mengelola izin. Setelah konfigurasi, Anda dapat memanfaatkan AWS Glue kemampuan untuk menanyakan data yang berbeda dengan menanyakan sumber daya metastore ini dengan aplikasi yang sudah dikenal. Ini termasuk Apache Spark dan Trino.

#### Bagaimana sumber daya metadata diatur
<a name="migrating-version-50-features-metastore-organized"></a>

Data diatur dalam hierarki logis katalog, database, dan tabel, menggunakan: AWS Glue Data Catalog
+ Katalog — Wadah logis yang menyimpan objek dari penyimpanan data, seperti skema atau tabel.
+ Database - Mengatur objek data seperti tabel dan tampilan dalam katalog.
+ Tabel dan tampilan — Objek data dalam database yang menyediakan lapisan abstraksi dengan skema yang dapat dimengerti. Mereka memudahkan untuk mengakses data yang mendasarinya, yang bisa dalam berbagai format dan di berbagai lokasi.

## Migrasi dari AWS Glue 4.0 ke AWS Glue 5.0
<a name="migrating-version-50-from-40"></a>

Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 4.0 akan ada di AWS Glue 5.0, kecuali transformasi pembelajaran mesin.

Parameter baru berikut ditambahkan:
+ `--enable-lakeformation-fine-grained-access`: Mengaktifkan fitur kontrol akses berbutir halus (FGAC) di tabel Lake Formation. AWS 

Lihat dokumentasi migrasi Spark:
+ [Panduan Migrasi: Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [Panduan Migrasi: SQL, Datasets dan DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [Panduan Migrasi: Streaming Terstruktur](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [Meningkatkan PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## Migrasi dari AWS Glue 3.0 ke 5.0 AWS Glue
<a name="migrating-version-50-from-30"></a>

**catatan**  
Untuk langkah-langkah migrasi yang terkait dengan AWS Glue 4.0, lihat[Migrasi dari AWS Glue 3.0 ke AWS Glue 4.0](migrating-version-40.md#migrating-version-40-from-30).

Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 3.0 akan ada di AWS Glue 5.0, kecuali transformasi pembelajaran mesin.

## Migrasi dari AWS Glue 2.0 ke 5.0 AWS Glue
<a name="migrating-version-50-from-20"></a>

**catatan**  
Untuk langkah-langkah migrasi yang terkait dengan AWS Glue 4.0 dan daftar perbedaan migrasi antara AWS Glue versi 3.0 dan 4.0, lihat[Migrasi dari AWS Glue 3.0 ke AWS Glue 4.0](migrating-version-40.md#migrating-version-40-from-30).

Perhatikan juga perbedaan migrasi berikut antara AWS Glue versi 3.0 dan 2.0:
+ Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 2.0 akan ada di AWS Glue 5.0, kecuali transformasi pembelajaran mesin.
+ Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan fitur yang dihapus tidak direferensikan. Misalnya, Spark 3.1.1 dan yang lebih baru tidak mengaktifkan Scala-untyped UDFs tetapi Spark 2.4 mengizinkannya.
+ Python 2.7 tidak didukung.
+ Setiap stoples tambahan yang disediakan dalam pekerjaan AWS Glue 2.0 yang ada dapat membawa dependensi yang bertentangan karena ada peningkatan di beberapa dependensi. Anda dapat menghindari konflik classpath dengan parameter `--user-jars-first` pekerjaan.
+ Perubahan perilaku stempel waktu file from/to parket. loading/saving Untuk detail selengkapnya, lihat Memutakhirkan dari Spark SQL 3.0 ke 3.1.
+ Paralelisme tugas Spark yang berbeda untuk konfigurasi. driver/executor Anda dapat menyesuaikan paralelisme tugas dengan meneruskan argumen `--executor-cores` pekerjaan.

## Perubahan perilaku logging di AWS Glue 5.0
<a name="enable-continous-logging-changes-glue-50"></a>

 Berikut ini adalah perubahan perilaku logging di AWS Glue 5.0. Untuk informasi selengkapnya, lihat [Logging untuk AWS Glue lowongan kerja](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html). 
+  Semua log (log sistem, log daemon Spark, log pengguna, dan log Glue Logger) sekarang ditulis ke grup `/aws-glue/jobs/error` log secara default. 
+  Grup `/aws-glue/jobs/logs-v2` log yang digunakan untuk pencatatan berkelanjutan di versi sebelumnya tidak lagi digunakan. 
+  Anda tidak dapat lagi mengganti nama atau menyesuaikan grup log atau nama aliran log menggunakan argumen logging berkelanjutan yang dihapus. Sebagai gantinya, lihat argumen pekerjaan baru di AWS Glue 5.0. 

### Dua argumen pekerjaan baru diperkenalkan di AWS Glue 5.0
<a name="enable-continous-logging-new-arguments-glue-50"></a>
+  `––custom-logGroup-prefix`: Memungkinkan Anda menentukan awalan khusus untuk grup `/aws-glue/jobs/error` dan `/aws-glue/jobs/output` log. 
+  `––custom-logStream-prefix`: Memungkinkan Anda menentukan awalan khusus untuk nama aliran log dalam grup log. 

   Aturan validasi dan batasan untuk awalan kustom meliputi: 
  +  Seluruh nama log stream harus antara 1 dan 512 karakter. 
  +  Awalan kustom untuk nama aliran log dibatasi hingga 400 karakter. 
  +  Karakter yang diizinkan dalam awalan termasuk karakter alfanumerik, garis bawah (`\$1`), tanda hubung (`-`), dan garis miring maju (`/`). 

### Argumen logging berkelanjutan yang tidak digunakan lagi di 5.0 AWS Glue
<a name="enabling-continuous-logging-deprecated-arguments"></a>

 Argumen pekerjaan berikut untuk logging berkelanjutan telah tidak digunakan lagi di 5.0 AWS Glue 
+  `––enable-continuous-cloudwatch-log` 
+  `––continuous-log-logGroup` 
+  `––continuous-log-logStreamPrefix` 
+  `––continuous-log-conversionPattern` 
+  `––enable-continuous-log-filter` 

## Konektor dan migrasi driver JDBC untuk 5.0 AWS Glue
<a name="migrating-version-50-connector-driver-migration"></a>

Untuk versi JDBC dan konektor data lake yang ditingkatkan, lihat:
+ [Lampiran B: Peningkatan driver JDBC](#migrating-version-50-appendix-jdbc-driver)
+ [Lampiran C: Peningkatan konektor](#migrating-version-50-appendix-connector)
+ [Lampiran D: Buka peningkatan format tabel](#migrating-version-50-appendix-open-table-formats)

Perubahan berikut berlaku untuk versi konektor atau driver yang diidentifikasi dalam lampiran untuk Glue 5.0.

**Amazon Redshift**  
Perhatikan perubahan berikut:
+ Menambahkan dukungan untuk nama tabel tiga bagian untuk memungkinkan konektor menanyakan tabel berbagi data Redshift.
+ Mengoreksi pemetaan Spark `ShortType` untuk menggunakan Redshift `SMALLINT` alih-alih lebih cocok dengan ukuran data yang `INTEGER` diharapkan.
+ Menambahkan dukungan untuk Nama Cluster Kustom (CNAME) untuk Amazon Redshift Tanpa Server.

**Apache Hudi**  
Perhatikan perubahan berikut:
+ Support indeks tingkat catatan.
+ Support auto generasi kunci rekam. Sekarang Anda tidak perlu menentukan bidang kunci rekam.

**Gunung Es Apache**  
Perhatikan perubahan berikut:
+ Support kontrol akses berbutir halus dengan. AWS Lake Formation
+ Support percabangan dan penandaan yang diberi nama referensi ke snapshot dengan siklus hidup independennya sendiri.
+ Menambahkan prosedur tampilan changelog yang menghasilkan tampilan yang berisi perubahan yang dibuat pada tabel selama periode tertentu atau antara snapshot tertentu.

**Danau Delta**  
Perhatikan perubahan berikut:
+ Support Delta Universal Format (UniForm) yang memungkinkan akses tanpa batas melalui Apache Iceberg dan Apache Hudi.
+ Support Deletion Vectors yang mengimplementasikan paradigma. Merge-on-Read

**AzureCosmos**  
Perhatikan perubahan berikut:
+ Menambahkan dukungan kunci partisi hierarkis.
+ Ditambahkan pilihan untuk menggunakan Skema kustom dengan StringType (json mentah) untuk properti bersarang.
+ Menambahkan opsi konfigurasi `spark.cosmos.auth.aad.clientCertPemBase64` untuk memungkinkan menggunakan otentikasi SPN (ServicePrincipal nama) dengan sertifikat alih-alih rahasia klien.

Untuk informasi selengkapnya, lihat log perubahan [konektor Azure Cosmos DB Spark](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/cosmos/azure-cosmos-spark_3-2_2-12/CHANGELOG.md).

**Microsoft SQL Server**  
Perhatikan perubahan berikut:
+ Enkripsi TLS diaktifkan secara default.
+ Ketika enkripsi = false tetapi server memerlukan enkripsi, sertifikat divalidasi berdasarkan pengaturan `trustServerCertificate` koneksi.
+ `aadSecurePrincipalId`dan tidak `aadSecurePrincipalSecret` digunakan lagi.
+ `getAADSecretPrincipalId`API dihapus.
+ Ditambahkan resolusi CNAME ketika ranah ditentukan.

**MongoDB**  
Perhatikan perubahan berikut:
+ Support untuk mode micro-batch dengan Spark Structured Streaming.
+ Support untuk tipe data BSON.
+ Ditambahkan dukungan untuk membaca beberapa koleksi saat menggunakan micro-batch atau mode streaming kontinu.
  + Jika nama koleksi yang digunakan dalam opsi `collection` konfigurasi Anda berisi koma, Konektor Spark memperlakukannya sebagai dua koleksi berbeda. Untuk menghindari hal ini, Anda harus melarikan diri dari koma dengan mendahuluinya dengan garis miring terbalik (\$1).
  + Jika nama koleksi yang digunakan dalam opsi `collection` konfigurasi Anda adalah “\$1”, Konektor Spark menafsirkannya sebagai spesifikasi untuk memindai semua koleksi. Untuk menghindari hal ini, Anda harus melarikan diri dari tanda bintang dengan mendahuluinya dengan garis miring terbalik (\$1).
  + Jika nama koleksi yang digunakan dalam opsi `collection` konfigurasi Anda berisi garis miring terbalik (\$1), Konektor Spark memperlakukan garis miring terbalik sebagai karakter escape, yang mungkin mengubah cara menafsirkan nilai. Untuk menghindari hal ini, Anda harus melarikan diri dari garis miring terbalik dengan mendahuluinya dengan garis miring terbalik lainnya.

Untuk informasi selengkapnya, lihat [konektor MongoDB untuk catatan rilis](https://www.mongodb.com/docs/spark-connector/current/release-notes/) Spark.

**Kepingan salju**  
Perhatikan perubahan berikut:
+ Memperkenalkan `trim_space` parameter baru yang dapat Anda gunakan untuk memangkas nilai `StringType` kolom secara otomatis saat menyimpan ke tabel Snowflake. Default: `false`.
+ Menonaktifkan `abort_detached_query` parameter pada tingkat sesi secara default.
+ Menghapus persyaratan `SFUSER` parameter saat menggunakan OAUTH.
+ Menghapus fitur Advanced Query Pushdown. Alternatif untuk fitur ini tersedia. Misalnya, alih-alih memuat data dari tabel Snowflake, pengguna dapat langsung memuat data dari kueri Snowflake SQL.

Untuk informasi lebih lanjut, lihat [Konektor Kepingan Salju untuk catatan rilis Spark](https://docs.snowflake.com/en/release-notes/clients-drivers/spark-connector-2024).

### Lampiran A: Peningkatan ketergantungan penting
<a name="migrating-version-50-appendix-dependencies"></a>

Berikut ini adalah peningkatan ketergantungan:


| Dependensi | Versi dalam AWS Glue 5.0 | Versi dalam AWS Glue 4.0 | Versi dalam AWS Glue 3.0 | Versi dalam AWS Glue 2.0 | Versi dalam AWS Glue 1.0 | 
| --- | --- | --- | --- | --- | --- | 
| Java | 17 | 8 | 8 | 8 | 8 | 
| Spark | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.4.1 | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Skala | 2.12.18 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.15.2 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2.69.0 | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 | 
| JSON4 | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Panah | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue Klien Katalog Data | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | N/A | 
| AWS SDK for Java | 2.29.52 | 1.12 | 1.12 |  |  | 
| Python | 3.11 | 3.10 | 3.7 | 2.7 & 3.6 | 2.7 & 3.6 | 
| Boto | 1.34.131 | 1.26 | 1.18 | 1.12 | N/A | 
| Konektor EMR DynamoDB | 5.6.0 | 4.16.0 |  |  |  | 

### Lampiran B: Peningkatan driver JDBC
<a name="migrating-version-50-appendix-jdbc-driver"></a>

Berikut ini adalah upgrade driver JDBC:


| Driver | Versi driver JDBC di 5.0 AWS Glue  | Versi driver JDBC di 4.0 AWS Glue  | Versi driver JDBC di 3.0 AWS Glue  | Versi driver JDBC di versi sebelumnya AWS Glue  | 
| --- | --- | --- | --- | --- | 
| MySQL | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 | 
| Microsoft SQL Server | 10.2.0 | 9.4.0 | 7.0.0 | 6.1.0 | 
| Database Oracle | 23.3.0.23.09 | 21.7 | 21.1 | 11.2 | 
| PostgreSQL | 42.7.3 | 42.3.6 | 42.2.18 | 42.1.0 | 
| Amazon Redshift |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.16  |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   | 
| SAP Hana | 2.20.17 | 2.17.12 |  |  | 
| Teradata | 20.00.00.33 | 20.00.00.06 |  |  | 

### Lampiran C: Peningkatan konektor
<a name="migrating-version-50-appendix-connector"></a>

Berikut ini adalah upgrade konektor:


| Driver | Versi konektor di AWS Glue 5.0 | Versi konektor di AWS Glue 4.0 | Versi konektor di AWS Glue 3.0 | 
| --- | --- | --- | --- | 
| Konektor EMR DynamoDB | 5.6.0 | 4.16.0 |  | 
| Amazon Redshift | 6.4.0 | 6.1.3 |  | 
| OpenSearch | 1.2.0 | 1.0.1 |  | 
| MongoDB | 10.3.0 | 10.0.4 | 3.0.0 | 
| Kepingan salju | 3.0.0 | 2.12.0 |  | 
| Google BigQuery | 0.32.2 | 0.32.2 |  | 
| AzureCosmos | 4.33.0 | 4.22.0 |  | 
| AzureSQL | 1.3.0 | 1.3.0 |  | 
| Vertica | 3.3.5 | 3.3.5 |  | 

### Lampiran D: Buka peningkatan format tabel
<a name="migrating-version-50-appendix-open-table-formats"></a>

Berikut ini adalah upgrade format tabel terbuka:


| OTF | Versi konektor di AWS Glue 5.0 | Versi konektor di AWS Glue 4.0 | Versi konektor di AWS Glue 3.0 | 
| --- | --- | --- | --- | 
| Hudi | 0.15.0 | 0.12.1 | 0.10.1 | 
| Danau Delta | 3.3.0 | 2.1.0 | 1.0.0 | 
| Gunung es | 1.7.1 | 1.0.0 | 0.13.1 | 

# Migrasi AWS Glue untuk pekerjaan Spark ke versi 4.0 AWS Glue
<a name="migrating-version-40"></a>

Topik ini menjelaskan perubahan antara AWS Glue versi 0.9, 1.0, 2.0, dan 3.0 untuk memungkinkan Anda memigrasikan aplikasi Spark dan pekerjaan ETL ke 4.0. AWS Glue Ini juga menjelaskan fitur di AWS Glue 4.0 dan keuntungan menggunakannya. 

Untuk menggunakan fitur ini dengan pekerjaan AWS Glue ETL Anda, pilih **4.0** `Glue version` saat membuat pekerjaan Anda.

**Topics**
+ [Fitur baru yang didukung](#migrating-version-40-features)
+ [Tindakan untuk bermigrasi ke 4.0 AWS Glue](#migrating-version-40-actions)
+ [Daftar periksa migrasi](#migrating-version-40-checklist)
+ [Migrasi dari AWS Glue 3.0 ke AWS Glue 4.0](#migrating-version-40-from-30)
+ [Migrasi dari AWS Glue 2.0 ke 4.0 AWS Glue](#migrating-version-40-from-20)
+ [Migrasi dari AWS Glue 1.0 ke 4.0 AWS Glue](#migrating-version-40-from-10)
+ [Migrasi dari AWS Glue 0,9 ke 4,0 AWS Glue](#migrating-version-40-from-09)
+ [Konektor dan migrasi driver JDBC untuk 4.0 AWS Glue](#migrating-version-40-connector-driver-migration)
+ [Lampiran A: Peningkatan ketergantungan penting](#migrating-version-40-appendix-dependencies)
+ [Lampiran B: Peningkatan driver JDBC](#migrating-version-40-appendix-jdbc-driver)
+ [Lampiran C: Peningkatan konektor](#migrating-version-40-appendix-connector)

## Fitur baru yang didukung
<a name="migrating-version-40-features"></a>

Bagian ini menjelaskan fitur dan keunggulan baru AWS Glue versi 4.0.
+ Ini didasarkan pada Apache Spark 3.3.0, tetapi mencakup pengoptimalan di, dan AWS Glue Amazon EMR, seperti proses kueri adaptif, pembaca vektor, dan pengocokan dan penggabungan partisi yang dioptimalkan. 
+ Driver JDBC yang ditingkatkan untuk semua sumber AWS Glue asli termasuk MySQL, Microsoft SQL Server, Oracle, PostgreSQL, MongoDB, dan pustaka dan dependensi Spark yang ditingkatkan yang dibawa oleh Spark 3.3.0.
+ Diperbarui dengan konektor Amazon Redshift baru dan driver JDBC.
+ Akses Amazon S3 yang dioptimalkan dengan Sistem File EMR (EMRFS) yang ditingkatkan dan mengaktifkan penghasil keluaran Amazon S3 yang dioptimalkan, secara default.
+ Akses Katalog Data yang Dioptimalkan dengan indeks partisi, predikat pushdown, daftar partisi, dan klien metastore Hive yang ditingkatkan.
+ Integrasi dengan Lake Formation untuk tabel katalog yang diatur dengan penyaringan tingkat sel dan transaksi data lake.
+ Mengurangi latensi startup untuk meningkatkan waktu penyelesaian pekerjaan secara keseluruhan dan interaktivitas.
+ Pekerjaan Spark ditagih dalam kenaikan 1 detik dengan durasi penagihan minimum 10x lebih rendah—dari minimum 10 menit hingga minimum 1 menit.
+ Dukungan asli untuk kerangka kerja danau data terbuka dengan Apache Hudi, Delta Lake, dan Apache Iceberg.
+ Dukungan asli untuk Plugin Penyimpanan Cloud Shuffle berbasis Amazon S3 (plugin Apache Spark) untuk menggunakan Amazon S3 untuk pengocokan dan kapasitas penyimpanan elastis.

**Peningkatan utama dari Spark 3.1.1 ke Spark 3.3.0**  
Perhatikan penyempurnaan berikut:
+ [Pemfilteran runtime tingkat baris (SPARK-32268).](https://issues.apache.org/jira/browse/SPARK-32268)
+ Penyempurnaan ANSI ([SPARK-38860](https://issues.apache.org/jira/browse/SPARK-38860)).
+ Perbaikan pesan kesalahan ([SPARK-38781](https://issues.apache.org/jira/browse/SPARK-38781)).
+ [Support tipe kompleks untuk pembaca vektor Parket (SPARK-34863).](https://issues.apache.org/jira/browse/SPARK-34863)
+ [Dukungan metadata file tersembunyi untuk Spark SQL (SPARK-37273).](https://issues.apache.org/jira/browse/SPARK-37273)
+ Sediakan profiler untuk Python/Pandas UDFs ([SPARK-37443](https://issues.apache.org/jira/browse/SPARK-37443)).
+ Perkenalkan Trigger. AvailableNow [untuk menjalankan kueri streaming seperti Trigger.Once dalam beberapa batch (SPARK-36533).](https://issues.apache.org/jira/browse/SPARK-36533)
+ [Kemampuan pushdown Datasource V2 yang lebih komprehensif (SPARK-38788).](https://issues.apache.org/jira/browse/SPARK-38788)
+ [Bermigrasi dari log4j 1 ke log4j 2 (SPARK-37814).](https://issues.apache.org/jira/browse/SPARK-37814)

**Perubahan penting lainnya**  
Perhatikan perubahan berikut:
+ Melanggar perubahan
  + [Jatuhkan referensi ke dukungan Python 3.6 di dokumen dan Python/docs (SPARK-36977).](https://issues.apache.org/jira/browse/SPARK-36977)
  + [Hapus peretasan tupel bernama dengan mengganti acar bawaan ke cloudpickle (SPARK-32079).](https://issues.apache.org/jira/browse/SPARK-32079)
  + [Bump versi panda minimum ke 1.0.5 (SPARK-37465).](https://issues.apache.org/jira/browse/SPARK-37465)

## Tindakan untuk bermigrasi ke 4.0 AWS Glue
<a name="migrating-version-40-actions"></a>

Untuk pekerjaan yang ada, ubah `Glue version` dari versi sebelumnya ke `Glue 4.0` dalam konfigurasi pekerjaan.
+ Di AWS Glue Studio, pilih `Glue 4.0 - Supports Spark 3.3, Scala 2, Python 3` di`Glue version`.
+ Di API, pilih `GlueVersion` parameter **4.0** dalam operasi [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob)API.

Untuk pekerjaan baru, pilih `Glue 4.0` kapan Anda membuat pekerjaan.
+ Di konsol, pilih `Spark 3.3, Python 3 (Glue Version 4.0) or Spark 3.3, Scala 2 (Glue Version 3.0)` di`Glue version`.
+ Di AWS Glue Studio, pilih `Glue 4.0 - Supports Spark 3.3, Scala 2, Python 3` di`Glue version`.
+ Di API, pilih `GlueVersion` parameter **4.0** dalam operasi [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob)API.

Untuk melihat log peristiwa Spark AWS Glue 4.0 yang berasal dari AWS Glue 2.0 atau sebelumnya, [luncurkan server riwayat Spark yang ditingkatkan untuk AWS Glue 4.0 menggunakan CloudFormation](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html) atau Docker.

## Daftar periksa migrasi
<a name="migrating-version-40-checklist"></a>
+ Apakah pustaka Python eksternal pekerjaan Anda bergantung pada Python 2.7/3.6?
  + Perbarui pustaka dependen dari Python 2.7/3.6 ke Python 3.10 karena Spark 3.3.0 sepenuhnya menghapus dukungan Python 2.7 dan 3.6.

## Migrasi dari AWS Glue 3.0 ke AWS Glue 4.0
<a name="migrating-version-40-from-30"></a>

Perhatikan perubahan berikut saat bermigrasi:
+ Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 3.0 akan ada di AWS Glue 4.0.
+ AWS Glue 3.0 menggunakan Spark 3.1.1 yang dioptimalkan oleh Amazon EMR, dan 4.0 AWS Glue menggunakan Spark 3.3.0 yang dioptimalkan oleh Amazon EMR.

  Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan bahwa fitur yang dihapus tidak direferensikan.
+ AWS Glue 4.0 juga dilengkapi pembaruan untuk EMRFS dan Hadoop. Untuk versi tertentu, lihat[Lampiran A: Peningkatan ketergantungan penting](#migrating-version-40-appendix-dependencies).
+  AWS SDK yang disediakan dalam pekerjaan ETL sekarang ditingkatkan dari 1,11 menjadi 1,12.
+ Semua pekerjaan Python akan menggunakan Python versi 3.10. Sebelumnya, Python 3.7 digunakan di 3.0. AWS Glue 

  Akibatnya, beberapa pymodules yang dibawa out-of-the-box oleh AWS Glue ditingkatkan.
+ Log4j telah ditingkatkan ke Log4j2.
  + [Untuk informasi tentang jalur migrasi Log4j2, lihat dokumentasi Log4j.](https://logging.apache.org/log4j/2.x/manual/migration.html#Log4j2API)
  + Anda harus mengganti nama file log4j.properties kustom sebagai file log4j2.properties sebagai gantinya, dengan properti log4j2 yang sesuai.
+ Untuk memigrasikan konektor tertentu, lihat[Konektor dan migrasi driver JDBC untuk 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+  AWS Encryption SDK ditingkatkan dari 1.x ke 2.x. AWS Glue pekerjaan yang menggunakan konfigurasi AWS Glue keamanan dan pekerjaan yang bergantung pada dependensi SDK AWS Enkripsi yang disediakan dalam runtime akan terpengaruh. Lihat petunjuk untuk migrasi AWS Glue pekerjaan.

  Anda dapat dengan aman memutakhirkan pekerjaan AWS Glue 2.0/3.0 ke pekerjaan AWS Glue 4.0 karena AWS Glue 2.0/3.0 sudah berisi versi jembatan SDK AWS Enkripsi.

Lihat dokumentasi migrasi Spark:
+ [Upgrade dari Spark SQL 3.1 ke 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade dari Spark SQL 3.2 ke 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)

## Migrasi dari AWS Glue 2.0 ke 4.0 AWS Glue
<a name="migrating-version-40-from-20"></a>

Perhatikan perubahan berikut saat bermigrasi:

**catatan**  
Untuk langkah-langkah migrasi yang terkait dengan AWS Glue 3.0, lihat[Migrasi dari AWS Glue 3.0 ke AWS Glue 4.0](#migrating-version-40-from-30).
+ Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 2.0 akan ada di AWS Glue 4.0.
+ Komitter yang dioptimalkan EMRFS S3 untuk menulis data Parket ke Amazon S3 diaktifkan secara default sejak 3.0. AWS Glue Namun, Anda masih dapat menonaktifkannya dengan menyetel `--enable-s3-parquet-optimized-committer` ke`false`.
+ AWS Glue 2.0 menggunakan sumber terbuka Spark 2.4 dan AWS Glue 4.0 menggunakan Spark 3.3.0 yang dioptimalkan Amazon EMR.
  + Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan bahwa fitur yang dihapus tidak direferensikan.
  + Misalnya, Spark 3.3.0 tidak mengaktifkan Scala-untyped UDFs, tetapi Spark 2.4 mengizinkannya.
+  AWS SDK yang disediakan dalam pekerjaan ETL sekarang ditingkatkan dari 1,11 menjadi 1,12.
+ AWS Glue 4.0 juga dilengkapi pembaruan untuk EMRFS, driver JDBC yang diperbarui, dan inklusi pengoptimalan tambahan ke Spark sendiri yang disediakan oleh. AWS Glue
+ Scala diperbarui ke 2.12 dari 2.11, dan Scala 2.12 tidak kompatibel dengan Scala 2.11.
+ Python 3.10 adalah versi default yang digunakan untuk skrip Python, karena 2.0 AWS Glue hanya menggunakan Python 3.7 dan 2.7.
  + Python 2.7 tidak didukung dengan Spark 3.3.0. Pekerjaan apa pun yang meminta Python 2 dalam konfigurasi pekerjaan akan gagal dengan file. IllegalArgumentException
  + Mekanisme baru untuk menginstal modul Python tambahan tersedia sejak AWS Glue 2.0.
+ Beberapa pembaruan ketergantungan, disorot dalam[Lampiran A: Peningkatan ketergantungan penting](#migrating-version-40-appendix-dependencies).
+ File JAR tambahan apa pun yang disediakan dalam pekerjaan AWS Glue 2.0 yang ada mungkin membawa dependensi yang bertentangan karena ada peningkatan di beberapa dependensi di 4.0 dari 2.0. Anda dapat menghindari konflik classpath di AWS Glue 4.0 dengan parameter `--user-jars-first` AWS Glue pekerjaan.
+ AWS Glue 4.0 menggunakan Spark 3.3. Dimulai dengan Spark 3.1, terjadi perubahan perilaku file parket stempel waktu from/to . loading/saving Untuk detail selengkapnya, lihat [Memutakhirkan dari Spark SQL 3.0](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-30-to-31) ke 3.1.

  Kami merekomendasikan untuk mengatur parameter berikut ketika data reading/writing parket yang berisi kolom stempel waktu. Menyetel parameter tersebut dapat menyelesaikan masalah ketidakcocokan kalender yang terjadi selama peningkatan Spark 2 ke Spark 3, untuk AWS Glue Dynamic Frame dan Spark Data Frame. Gunakan opsi CORRECTED untuk membaca nilai datetime apa adanya; dan opsi LEGACY untuk rebase nilai datetime sehubungan dengan perbedaan kalender selama membaca.

  ```
  - Key: --conf
  - Value: spark.sql.legacy.parquet.int96RebaseModeInRead=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.int96RebaseModeInWrite=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.datetimeRebaseModeInRead=[CORRECTED|LEGACY]
  ```
+ Untuk memigrasikan konektor tertentu, lihat[Konektor dan migrasi driver JDBC untuk 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+  AWS Encryption SDK ditingkatkan dari 1.x ke 2.x. AWS Glue pekerjaan yang menggunakan konfigurasi AWS Glue keamanan dan pekerjaan yang bergantung pada dependensi SDK AWS Enkripsi yang disediakan dalam runtime akan terpengaruh. Lihat petunjuk ini untuk migrasi AWS Glue pekerjaan:
  + Anda dapat dengan aman memutakhirkan pekerjaan AWS Glue 2.0 ke pekerjaan AWS Glue 4.0 karena AWS Glue 2.0 sudah berisi versi jembatan SDK AWS Enkripsi.

Lihat dokumentasi migrasi Spark:
+ [Upgrade dari Spark SQL 2.4 ke 3.0](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-24-to-30)
+ [Upgrade dari Spark SQL 3.1 ke 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade dari Spark SQL 3.2 ke 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)
+ [Perubahan perilaku Datetime diharapkan sejak Spark 3.0.](https://issues.apache.org/jira/browse/SPARK-31408)

## Migrasi dari AWS Glue 1.0 ke 4.0 AWS Glue
<a name="migrating-version-40-from-10"></a>

Perhatikan perubahan berikut saat bermigrasi:
+ AWS Glue 1.0 menggunakan sumber terbuka Spark 2.4 dan AWS Glue 4.0 menggunakan Spark 3.3.0 yang dioptimalkan oleh Amazon EMR.
  + Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan bahwa fitur yang dihapus tidak direferensikan.
  + Misalnya, Spark 3.3.0 tidak mengaktifkan Scala-untyped UDFs, tetapi Spark 2.4 mengizinkannya.
+ Semua pekerjaan di AWS Glue 4.0 akan dijalankan dengan waktu startup yang ditingkatkan secara signifikan. Pekerjaan Spark akan ditagih dalam kenaikan 1 detik dengan durasi penagihan minimum 10x lebih rendah karena latensi startup akan meningkat dari maksimum 10 menit menjadi maksimum 1 menit.
+ Perilaku logging telah berubah secara signifikan di AWS Glue 4.0, Spark 3.3.0 memiliki persyaratan minimum Log4j2.
+ Beberapa pembaruan ketergantungan, disorot dalam lampiran.
+ Scala juga diperbarui ke 2.12 dari 2.11, dan Scala 2.12 tidak kompatibel dengan Scala 2.11.
+ Python 3.10 juga merupakan versi default yang digunakan untuk skrip Python, karena 0.9 AWS Glue hanya menggunakan Python 2.

  Python 2.7 tidak didukung dengan Spark 3.3.0. Pekerjaan apa pun yang meminta Python 2 dalam konfigurasi pekerjaan akan gagal dengan file. IllegalArgumentException
+ Mekanisme baru untuk menginstal modul Python tambahan melalui pip tersedia sejak 2.0. AWS Glue Untuk informasi selengkapnya, lihat [Menginstal modul Python tambahan dengan pip](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html#addl-python-modules-support) di 2.0\$1. AWS Glue 
+ AWS Glue 4.0 tidak berjalan di Apache YARN, jadi pengaturan YARN tidak berlaku.
+ AWS Glue 4.0 tidak memiliki Hadoop Distributed File System (HDFS).
+ File JAR tambahan apa pun yang disediakan dalam pekerjaan AWS Glue 1.0 yang ada mungkin membawa dependensi yang bertentangan karena ada peningkatan di beberapa dependensi di 4.0 dari 1.0. Kami mengaktifkan AWS Glue 4.0 dengan parameter `--user-jars-first` AWS Glue pekerjaan secara default, untuk menghindari masalah ini.
+ AWS Glue 4.0 mendukung penskalaan otomatis. Oleh karena itu, ExecutorAllocationManager metrik akan tersedia saat penskalaan otomatis diaktifkan.
+ Dalam pekerjaan AWS Glue versi 4.0, Anda menentukan jumlah pekerja dan jenis pekerja, tetapi tidak menentukan`maxCapacity`.
+ AWS Glue 4.0 belum mendukung transformasi pembelajaran mesin.
+ Untuk memigrasikan konektor tertentu, lihat[Konektor dan migrasi driver JDBC untuk 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+  AWS Encryption SDK ditingkatkan dari 1.x ke 2.x. AWS Glue pekerjaan yang menggunakan konfigurasi AWS Glue keamanan dan pekerjaan yang bergantung pada dependensi SDK AWS Enkripsi yang disediakan dalam runtime akan terpengaruh. Lihat petunjuk ini untuk migrasi AWS Glue pekerjaan.
  + Anda tidak dapat memigrasikan pekerjaan AWS Glue 0.9/1.0 ke pekerjaan AWS Glue 4.0 secara langsung. Ini karena ketika memutakhirkan langsung ke versi 2.x atau yang lebih baru dan mengaktifkan semua fitur baru dengan segera, SDK AWS Enkripsi tidak akan dapat mendekripsi ciphertext yang dienkripsi di bawah versi SDK Enkripsi sebelumnya. AWS 
  + Untuk memutakhirkan dengan aman, pertama-tama kami sarankan Anda bermigrasi ke pekerjaan AWS Glue 2.0/3.0 yang berisi versi jembatan SDK AWS Enkripsi. Jalankan pekerjaan sekali untuk menggunakan versi jembatan AWS Encryption SDK.
  + Setelah selesai, Anda dapat dengan aman memigrasikan pekerjaan AWS Glue 2.0/3.0 ke 4.0. AWS Glue 

Lihat dokumentasi migrasi Spark:
+ [Upgrade dari Spark SQL 2.4 ke 3.0](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-24-to-30)
+ [Upgrade dari Spark SQL 3.0 ke 3.1](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-30-to-31)
+ [Upgrade dari Spark SQL 3.1 ke 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade dari Spark SQL 3.2 ke 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)
+ [Perubahan perilaku Datetime diharapkan sejak Spark 3.0.](https://issues.apache.org/jira/browse/SPARK-31408)

## Migrasi dari AWS Glue 0,9 ke 4,0 AWS Glue
<a name="migrating-version-40-from-09"></a>

Perhatikan perubahan berikut saat bermigrasi:
+ AWS Glue 0.9 menggunakan sumber terbuka Spark 2.2.1 dan 4.0 AWS Glue menggunakan Amazon EMR-Optimized Spark 3.3.0.
  + Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan bahwa fitur yang dihapus tidak direferensikan.
  + Misalnya, Spark 3.3.0 tidak mengaktifkan Scala-untyped UDFs, tetapi Spark 2.2 mengizinkannya.
+ Semua pekerjaan di AWS Glue 4.0 akan dijalankan dengan waktu startup yang ditingkatkan secara signifikan. Pekerjaan Spark akan ditagih dalam kenaikan 1 detik dengan durasi penagihan minimum 10x lebih rendah karena latensi startup akan meningkat dari maksimum 10 menit menjadi maksimum 1 menit.
+ Perilaku logging telah berubah secara signifikan sejak AWS Glue 4.0, Spark 3.3.0 memiliki persyaratan minimum Log4j2 seperti yang disebutkan di sini (\$1 -32-ke-33). https://spark.apache.org/docs/latest/core-migration-guide.html upgrading-from-core
+ Beberapa pembaruan ketergantungan, disorot dalam lampiran.
+ Scala juga diperbarui ke 2.12 dari 2.11, dan Scala 2.12 tidak kompatibel dengan Scala 2.11.
+ Python 3.10 juga merupakan versi default yang digunakan untuk skrip Python, karena 0.9 AWS Glue hanya menggunakan Python 2.
  + Python 2.7 tidak didukung dengan Spark 3.3.0. Pekerjaan apa pun yang meminta Python 2 dalam konfigurasi pekerjaan akan gagal dengan file. IllegalArgumentException
  + Mekanisme baru untuk menginstal modul Python tambahan melalui pip tersedia.
+ AWS Glue 4.0 tidak berjalan di Apache YARN, jadi pengaturan YARN tidak berlaku.
+ AWS Glue 4.0 tidak memiliki Hadoop Distributed File System (HDFS).
+ File JAR tambahan apa pun yang disediakan dalam AWS Glue 0.9 pekerjaan yang ada mungkin membawa dependensi yang bertentangan karena ada peningkatan di beberapa dependensi di 3.0 dari 0.9. Anda dapat menghindari konflik classpath di AWS Glue 3.0 dengan parameter `--user-jars-first` AWS Glue pekerjaan.
+ AWS Glue 4.0 mendukung penskalaan otomatis. Oleh karena itu, ExecutorAllocationManager metrik akan tersedia saat penskalaan otomatis diaktifkan.
+ Dalam pekerjaan AWS Glue versi 4.0, Anda menentukan jumlah pekerja dan jenis pekerja, tetapi tidak menentukan`maxCapacity`.
+ AWS Glue 4.0 belum mendukung transformasi pembelajaran mesin.
+ Untuk memigrasikan konektor tertentu, lihat[Konektor dan migrasi driver JDBC untuk 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+  AWS Encryption SDK ditingkatkan dari 1.x ke 2.x. AWS Glue pekerjaan yang menggunakan konfigurasi AWS Glue keamanan dan pekerjaan yang bergantung pada dependensi SDK AWS Enkripsi yang disediakan dalam runtime akan terpengaruh. Lihat petunjuk ini untuk migrasi AWS Glue pekerjaan.
  + Anda tidak dapat memigrasikan pekerjaan AWS Glue 0.9/1.0 ke pekerjaan AWS Glue 4.0 secara langsung. Ini karena ketika memutakhirkan langsung ke versi 2.x atau yang lebih baru dan mengaktifkan semua fitur baru dengan segera, SDK AWS Enkripsi tidak akan dapat mendekripsi ciphertext yang dienkripsi di bawah versi SDK Enkripsi sebelumnya. AWS 
  + Untuk memutakhirkan dengan aman, pertama-tama kami sarankan Anda bermigrasi ke pekerjaan AWS Glue 2.0/3.0 yang berisi versi jembatan SDK AWS Enkripsi. Jalankan pekerjaan sekali untuk menggunakan versi jembatan AWS Encryption SDK.
  + Setelah selesai, Anda dapat dengan aman memigrasikan pekerjaan AWS Glue 2.0/3.0 ke 4.0. AWS Glue 

Lihat dokumentasi migrasi Spark:
+ [Upgrade dari Spark SQL 2.2 ke 2.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-22-to-23)
+ [Upgrade dari Spark SQL 2.3 ke 2.4](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-23-to-24)
+ [Upgrade dari Spark SQL 2.4 ke 3.0](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-24-to-30)
+ [Upgrade dari Spark SQL 3.0 ke 3.1](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-30-to-31)
+ [Upgrade dari Spark SQL 3.1 ke 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade dari Spark SQL 3.2 ke 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)
+ [Perubahan perilaku Datetime diharapkan sejak Spark 3.0](https://issues.apache.org/jira/browse/SPARK-31408).

## Konektor dan migrasi driver JDBC untuk 4.0 AWS Glue
<a name="migrating-version-40-connector-driver-migration"></a>

Untuk versi JDBC dan konektor data lake yang ditingkatkan, lihat:
+ [Lampiran B: Peningkatan driver JDBC](#migrating-version-40-appendix-jdbc-driver)
+ [Lampiran C: Peningkatan konektor](#migrating-version-40-appendix-connector)

### Hudi
<a name="migrating-version-40-connector-driver-migration-hudi"></a>
+ Peningkatan dukungan Spark SQL:
  + Melalui `Call Procedure` perintah, ada dukungan tambahan untuk upgrade, downgrade, bootstrap, clean, dan repair. `Create/Drop/Show/Refresh Index`sintaks dimungkinkan di Spark SQL.
  + Kesenjangan kinerja telah ditutup antara penggunaan melalui Spark DataSource sebagai lawan dari Spark SQL. Datasource menulis di masa lalu dulunya lebih cepat dari SQL.
  + Semua generator kunci bawaan mengimplementasikan operasi API khusus SPARK yang lebih berkinerja tinggi.
  + Mengganti transformasi UDF dalam `insert` operasi massal dengan transformasi RDD untuk mengurangi biaya penggunaan. SerDe
  + Spark SQL dengan Hudi membutuhkan `primaryKey` untuk ditentukan oleh `tblproperites` atau opsi dalam pernyataan SQL. Untuk operasi pembaruan dan penghapusan, `preCombineField` diperlukan juga.
+ Setiap tabel Hudi yang dibuat sebelum versi 0.10.0 tanpa `primaryKey` perlu dibuat ulang dengan `primaryKey` bidang sejak versi 0.10.0.

### PostgreSQL
<a name="migrating-version-40-connector-driver-migration-postgresql"></a>
+ Beberapa kerentanan (CVEs) telah diatasi.
+ Java 8 didukung secara native.
+ Jika pekerjaan menggunakan Array Array, dengan pengecualian array byte, skenario ini dapat diperlakukan sebagai array multidimensi.

### MongoDB
<a name="migrating-version-40-connector-driver-migration-mongodb"></a>
+ Konektor MongoDB saat ini mendukung Spark versi 3.1 atau yang lebih baru dan MongoDB versi 4.0 atau yang lebih baru.
+ Karena peningkatan konektor, beberapa nama properti berubah. Misalnya, nama properti URI diubah menjadi`connection.uri`. Untuk informasi lebih lanjut tentang opsi saat ini, lihat blog [MongoDB Spark Connector](https://www.mongodb.com/docs/spark-connector/current/configuration/).
+ Menggunakan MongoDB 4.0 yang dihosting oleh Amazon DocumentDB memiliki beberapa perbedaan fungsional. Untuk informasi lebih lanjut, lihat topik-topik ini:
  + [Perbedaan Fungsional: Amazon DocumentDB dan MongoDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/functional-differences.html)
  +  [ APIsMongoDB, Operasi, dan Tipe Data yang Didukung](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html).
+ Opsi “partisi” dibatasi untuk`ShardedPartitioner`,`PaginateIntoPartitionsPartitioner`, dan. `SinglePartitionPartitioner` Itu tidak dapat menggunakan default `SamplePartitioner` dan `PaginateBySizePartitioner` untuk Amazon DocumentDB karena operator panggung tidak mendukung API MongoDB. Untuk informasi selengkapnya, lihat [ APIsMongoDB, Operasi, dan Tipe Data yang Didukung](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html).

### Danau Delta
<a name="migrating-version-40-connector-driver-migration-delta"></a>
+ Delta Lake sekarang mendukung [perjalanan waktu di SQL](https://docs.delta.io/2.1.0/delta-batch.html#query-an-older-snapshot-of-a-table-time-travel) untuk menanyakan data lama dengan mudah. Dengan pembaruan ini, perjalanan waktu sekarang tersedia baik di Spark SQL maupun melalui API. DataFrame Support telah ditambahkan untuk versi TIMESTAMP saat ini di SQL.
+ [Spark 3.3 memperkenalkan Trigger. AvailableNow](https://issues.apache.org/jira/browse/SPARK-36533)untuk menjalankan kueri streaming sebagai setara dengan `Trigger.Once` untuk kueri batch. Dukungan ini juga tersedia saat menggunakan tabel Delta sebagai sumber streaming.
+ Support untuk SHOW COLUMNS untuk mengembalikan daftar kolom dalam tabel.
+ Support untuk [DESKRIPTION DETAIL](https://docs.delta.io/2.1.0/delta-utility.html#retrieve-delta-table-details) di Scala dan DeltaTable Python API. Ini mengambil informasi rinci tentang tabel Delta menggunakan DeltaTable API atau Spark SQL.
+ [Support untuk mengembalikan metrik operasi dari perintah SQL [Delete](https://github.com/delta-io/delta/pull/1328), [Merge](https://github.com/delta-io/delta/pull/1327), dan Update.](https://github.com/delta-io/delta/pull/1331) Sebelumnya perintah SQL ini mengembalikan kosong DataFrame, sekarang mereka mengembalikan DataFrame dengan metrik yang berguna tentang operasi yang dilakukan.
+ Optimalkan peningkatan kinerja:
  + Atur opsi konfigurasi `spark.databricks.delta.optimize.repartition.enabled=true` untuk digunakan `repartition(1)` alih-alih `coalesce(1)` dalam perintah Optimalkan untuk kinerja yang lebih baik saat memadatkan banyak file kecil.
  + [Peningkatan kinerja](https://github.com/delta-io/delta/pull/1315) dengan menggunakan pendekatan berbasis antrian untuk memparalelkan pekerjaan pemadatan.
+ Perubahan penting lainnya:
  + [Support untuk menggunakan variabel](https://github.com/delta-io/delta/issues/1267) dalam perintah VACUUM dan OPTIMIZE SQL.
  + Perbaikan untuk CONVERT TO DELTA dengan tabel katalog termasuk:
    + [Isi otomatis skema partisi](https://github.com/delta-io/delta/commit/18d4d12ed06f973006501f6c39c8785db51e2b1f) dari katalog saat tidak disediakan.
    + [Gunakan informasi partisi](https://github.com/delta-io/delta/commit/ebff29904f3ababb889897343f8f8f7a010a1f71) dari katalog untuk menemukan file data yang akan dikomit alih-alih melakukan pemindaian direktori lengkap. Alih-alih melakukan semua file data dalam direktori tabel, hanya file data di bawah direktori partisi aktif yang akan dilakukan.
  + [Support for Change Data Feed (CDF) batch membaca](https://github.com/delta-io/delta/issues/1349) pada tabel yang diaktifkan pemetaan kolom saat DROP COLUMN dan RENAME COLUMN belum digunakan. Untuk informasi lebih lanjut, lihat [dokumentasi Delta Lake](https://docs.delta.io/2.1.0/delta-change-data-feed.html#known-limitations).
  + [Tingkatkan performa perintah Update](https://github.com/delta-io/delta/pull/1202) dengan mengaktifkan pemangkasan skema di lintasan pertama.

### Gunung Es Apache
<a name="migrating-version-40-connector-driver-migration-iceberg"></a>
+ Menambahkan beberapa [peningkatan kinerja](https://iceberg.apache.org/releases/#performance-improvements) untuk perencanaan pemindaian dan kueri Spark.
+ Menambahkan klien katalog REST umum yang menggunakan komit berbasis perubahan untuk menyelesaikan konflik komit di sisi layanan.
+ `AS OF`sintaks untuk kueri perjalanan waktu SQL didukung.
+ Ditambahkan merge-on-read dukungan untuk MERGE dan UPDATE query.
+ Ditambahkan dukungan untuk menulis ulang partisi menggunakan Z-order.
+ Menambahkan spesifikasi dan implementasi untuk Puffin, format untuk statistik besar dan gumpalan indeks, seperti sketsa [Theta](https://datasketches.apache.org/docs/Theta/InverseEstimate.html) atau filter mekar.
+ Menambahkan antarmuka baru untuk mengkonsumsi data secara bertahap (baik pemindaian append dan changelog).
+ Menambahkan dukungan untuk operasi massal dan pembacaan berkisar ke antarmuka FileIO.
+ Menambahkan lebih banyak tabel metadata untuk menampilkan file hapus di pohon metadata.
+ Perilaku drop table berubah. Di Iceberg 0.13.1, menjalankan `DROP TABLE` menghapus tabel dari katalog dan menghapus isi tabel juga. Di Iceberg 1.0.0, `DROP TABLE` hanya menghapus tabel dari katalog. Untuk menghapus isi tabel gunakan`DROP TABLE PURGE`.
+ Pembacaan vektor parket diaktifkan secara default di Iceberg 1.0.0. Jika Anda ingin menonaktifkan pembacaan vektor, setel ke. `read.parquet.vectorization.enabled` `false`

### Oracle
<a name="migrating-version-40-connector-driver-migration-oracle"></a>

Perubahan kecil.

### MySQL
<a name="migrating-version-40-connector-driver-migration-mysql"></a>

Perubahan kecil.

### Amazon Redshift
<a name="migrating-version-40-connector-driver-migration-redshift"></a>

AWS Glue 4.0 memiliki konektor Amazon Redshift baru dengan driver JDBC baru. Untuk informasi tentang penyempurnaan dan cara bermigrasi dari AWS Glue versi sebelumnya, lihat. [Koneksi Redshift](aws-glue-programming-etl-connect-redshift-home.md)

## Lampiran A: Peningkatan ketergantungan penting
<a name="migrating-version-40-appendix-dependencies"></a>

Berikut ini adalah peningkatan ketergantungan:


| Dependensi | Versi dalam AWS Glue 4.0 | Versi dalam AWS Glue 3.0 | Versi dalam AWS Glue 2.0 | Versi dalam AWS Glue 1.0 | 
| --- | --- | --- | --- | --- | 
| Spark | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Skala | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.13.3 | 2.10.x | 2.7.x | 2.7.x | 
| Hive | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 | 
| JSON4 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Panah | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue Klien Katalog Data | 3.7.0 | 3.0.0 | 1.10.0 | N/A | 
| Python | 3.10 | 3.7 | 2.7 & 3.6 | 2.7 & 3.6 | 
| Boto | 1.26 | 1.18 | 1.12 | N/A | 

## Lampiran B: Peningkatan driver JDBC
<a name="migrating-version-40-appendix-jdbc-driver"></a>

Berikut ini adalah upgrade driver JDBC:


| Driver | Versi driver JDBC di versi sebelumnya AWS Glue  | Versi driver JDBC di 3.0 AWS Glue  | Versi driver JDBC di 4.0 AWS Glue  | 
| --- | --- | --- | --- | 
| MySQL | 5.1 | 8.0.23 | 8.0.23 | 
| Microsoft SQL Server | 6.1.0 | 7.0.0 | 9.4.0 | 
| Database Oracle | 11.2 | 21.1 | 21.7 | 
| PostgreSQL | 42.1.0 | 42.2.18 | 42.3.6 | 
| MongoDB | 2.0.0 | 4.0.0 | 4.7.2 | 
| Amazon Redshift |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc42-2.1.0.16  | 

## Lampiran C: Peningkatan konektor
<a name="migrating-version-40-appendix-connector"></a>

Berikut ini adalah upgrade konektor:


| Driver | Versi konektor di AWS Glue 3.0 | Versi konektor di AWS Glue 4.0 | 
| --- | --- | --- | 
| MongoDB | 3.0.0 | 10.0.4 | 
| Hudi | 0.10.1 | 0.12.1 | 
| Danau Delta | 1.0.0 | 2.1.0 | 
| Gunung es | 0.13.1 | 1.0.0 | 
| DynamoDB | 1.11 | 1.12 | 

# Peningkatan AI generatif untuk Apache Spark in Glue AWS
<a name="upgrade-analysis"></a>

 Peningkatan Spark di AWS Glue memungkinkan insinyur dan pengembang data untuk meningkatkan dan memigrasikan pekerjaan AWS Glue Spark mereka yang ada ke rilis Spark terbaru menggunakan AI generatif. Insinyur data dapat menggunakannya untuk memindai pekerjaan AWS Glue Spark mereka, menghasilkan rencana peningkatan, menjalankan rencana, dan memvalidasi output. Ini mengurangi waktu dan biaya peningkatan Spark dengan mengotomatiskan pekerjaan yang tidak terdiferensiasi untuk mengidentifikasi dan memperbarui skrip, konfigurasi, dependensi, metode, dan fitur Spark. 

![\[GIF menunjukkan implementasi ujung ke ujung dari alur kerja analisis peningkatan sampel.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/demo_lumos.gif)


## Cara kerjanya
<a name="upgrade-analysis-how-it-works"></a>

 Saat Anda menggunakan analisis pemutakhiran, AWS Glue mengidentifikasi perbedaan antara versi dan konfigurasi dalam kode pekerjaan Anda untuk menghasilkan rencana peningkatan. Paket pemutakhiran merinci semua perubahan kode, dan langkah-langkah migrasi yang diperlukan. Selanjutnya, AWS Glue membangun dan menjalankan aplikasi yang ditingkatkan di lingkungan untuk memvalidasi perubahan dan menghasilkan daftar perubahan kode bagi Anda untuk memigrasikan pekerjaan Anda. Anda dapat melihat skrip yang diperbarui bersama dengan ringkasan yang merinci perubahan yang diusulkan. Setelah menjalankan tes Anda sendiri, terima perubahan dan pekerjaan AWS Glue akan diperbarui secara otomatis ke versi terbaru dengan skrip baru. 

 Proses analisis peningkatan dapat memakan waktu untuk diselesaikan, tergantung pada kompleksitas pekerjaan dan beban kerja. Hasil analisis pemutakhiran akan disimpan di jalur Amazon S3 yang ditentukan, yang dapat ditinjau untuk memahami peningkatan dan potensi masalah kompatibilitas. Setelah meninjau hasil analisis pemutakhiran, Anda dapat memutuskan apakah akan melanjutkan dengan peningkatan aktual atau membuat perubahan yang diperlukan pada pekerjaan sebelum meningkatkan. 

## Prasyarat
<a name="upgrade-analysis-prerequisites"></a>

 Prasyarat berikut diperlukan untuk menggunakan AI generatif untuk meningkatkan pekerjaan di Glue: AWS 
+  AWS PySpark Pekerjaan Glue 2 — hanya pekerjaan AWS Glue 2 yang dapat ditingkatkan ke AWS Glue 5. 
+  Izin IAM diperlukan untuk memulai analisis, meninjau hasil, dan meningkatkan pekerjaan Anda. Untuk informasi lebih lanjut, lihat contoh di [Izin](#auto-upgrade-permissions) bagian di bawah ini. 
+  Jika menggunakan AWS KMS untuk mengenkripsi artefak analisis, maka AWS AWS KMS izin tambahan diperlukan. Untuk informasi lebih lanjut, lihat contoh di [AWS KMS kebijakan](#auto-upgrade-kms-policy) bagian di bawah ini. 

### Izin
<a name="auto-upgrade-permissions"></a>

#### Untuk memulai analisis peningkatan baru, Anda memerlukan izin berikut:
<a name="collapsible-section-1"></a>

1.  Perbarui kebijakan IAM pemanggil dengan izin berikut: 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "glue:StartJobUpgradeAnalysis",
                   "glue:StartJobRun",
                   "glue:GetJobRun",
                   "glue:GetJob",
                   "glue:BatchStopJobRun"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:job/jobName"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
              		 "arn:aws:s3:::amzn-s3-demo-bucket/script-location/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": [
               		"arn:aws:s3:::amzn-s3-demo-bucket/results/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
           }
       ]
   }
   ```

------

1.  Perbarui peran Eksekusi dari pekerjaan yang Anda upgrade untuk menyertakan kebijakan in-line berikut: 

   ```
       {
         "Effect": "Allow",
         "Action": ["s3:GetObject"],    
         "Resource": [
           "ARN of the Amazon S3 path provided on API",
           "ARN of the Amazon S3 path provided on API/*"
         ]
       }
   ```

    Misalnya, jika Anda menggunakan jalur Amazon S3`s3://amzn-s3-demo-bucket/upgraded-result`, maka kebijakannya adalah: 

   ```
   {
         "Effect": "Allow",
         "Action": ["s3:GetObject"],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/upgraded-result/",
           "arn:aws:s3:::amzn-s3-demo-bucket/upgraded-result/*"
         ]
       }
   ```

#### Untuk mengambil detail analisis, Anda memerlukan izin berikut:
<a name="collapsible-section-2"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:GetJobUpgradeAnalysis"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:job/jobName"
      ]
    }
  ]
}
```

------

#### Untuk menghentikan analisis yang sedang berlangsung, Anda memerlukan izin berikut:
<a name="collapsible-section-3"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StopJobUpgradeAnalysis",
        "glue:BatchStopJobRun"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:job/jobName"
      ]
    }
  ]
}
```

------

#### Untuk membuat daftar semua analisis yang dikirimkan pada pekerjaan tertentu, Anda memerlukan izin berikut:
<a name="collapsible-section-4"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListJobUpgradeAnalyses"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:job/jobName"
      ]
    }
  ]
}
```

------

#### Untuk menerima perubahan dari analisis dan meningkatkan pekerjaan, Anda memerlukan izin berikut:
<a name="collapsible-section-5"></a>

### AWS KMS kebijakan
<a name="auto-upgrade-kms-policy"></a>

 Untuk meneruskan AWS KMS kunci kustom Anda sendiri saat memulai analisis, silakan lihat bagian berikut untuk mengonfigurasi izin yang sesuai pada AWS KMS tombol. 

#### Mengkonfigurasi enkripsi artefak hasil menggunakan kunci: AWS KMS
<a name="w2aac37b7c20c13c13b5b5"></a>

 Kebijakan ini memastikan bahwa Anda memiliki izin enkripsi dan dekripsi pada kunci. AWS KMS 

```
{
    "Effect": "Allow",
    "Principal":{
        "AWS": "<IAM Customer caller ARN>"
    },
    "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey",
    ],
    "Resource": "<key-arn-passed-on-start-api>"
}
```

## Menjalankan analisis peningkatan dan menerapkan skrip pemutakhiran
<a name="auto-upgrade-procedure"></a>

 Anda dapat menjalankan analisis pemutakhiran, yang akan menghasilkan rencana peningkatan pada pekerjaan yang Anda pilih dari tampilan **Pekerjaan**. 

1.  Dari **Jobs**, pilih job AWS Glue 2.0, lalu pilih **Run upgrade analysis** dari menu **Actions**.   
![\[Tangkapan layar menunjukkan analisis Upgrade dengan AI dari menu tindakan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/upgrade-analysis-run-action-menu.png)

1.  Di modal, pilih jalur untuk menyimpan paket peningkatan yang Anda hasilkan di **jalur Hasil**. Ini harus berupa bucket Amazon S3 yang dapat Anda akses dan tulis.   
![\[Tangkapan layar menunjukkan analisis peningkatan yang telah selesai. Tombol untuk Terapkan skrip yang ditingkatkan terlihat.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/upgrade-analysis-configuration-options.png)

1.  Konfigurasikan opsi tambahan, jika diperlukan: 
   +  **Jalankan konfigurasi** — opsional: Konfigurasi run adalah pengaturan opsional yang memungkinkan Anda menyesuaikan berbagai aspek proses validasi yang dilakukan selama analisis peningkatan. Konfigurasi ini digunakan untuk menjalankan skrip yang ditingkatkan dan memungkinkan Anda memilih properti lingkungan komputasi (tipe pekerja, jumlah pekerja, dll). Perhatikan bahwa Anda harus menggunakan akun pengembang non-produksi untuk menjalankan validasi pada kumpulan data sampel sebelum meninjau, menerima perubahan, dan menerapkannya ke lingkungan produksi. Konfigurasi run mencakup parameter yang dapat disesuaikan berikut: 
     + Jenis pekerja: Anda dapat menentukan jenis pekerja yang akan digunakan untuk menjalankan validasi, memungkinkan Anda memilih sumber daya komputasi yang sesuai berdasarkan kebutuhan Anda.
     + Jumlah pekerja: Anda dapat menentukan jumlah pekerja yang akan disediakan untuk menjalankan validasi, memungkinkan Anda untuk menskalakan sumber daya sesuai dengan kebutuhan beban kerja Anda.
     + Job timeout (dalam hitungan menit): Parameter ini memungkinkan Anda untuk menetapkan batas waktu untuk validasi berjalan, memastikan bahwa pekerjaan berakhir setelah durasi yang ditentukan untuk mencegah konsumsi sumber daya yang berlebihan.
     + Konfigurasi keamanan: Anda dapat mengonfigurasi pengaturan keamanan, seperti enkripsi dan kontrol akses, untuk memastikan perlindungan data dan sumber daya Anda selama validasi berjalan.
     + Parameter pekerjaan tambahan: Jika diperlukan, Anda dapat menambahkan parameter pekerjaan baru untuk lebih menyesuaikan lingkungan eksekusi untuk validasi berjalan.

      Dengan memanfaatkan konfigurasi run, Anda dapat menyesuaikan proses validasi agar sesuai dengan kebutuhan spesifik Anda. Misalnya, Anda dapat mengonfigurasi proses validasi untuk menggunakan kumpulan data yang lebih kecil, yang memungkinkan analisis selesai lebih cepat dan mengoptimalkan biaya. Pendekatan ini memastikan bahwa analisis peningkatan dilakukan secara efisien sambil meminimalkan pemanfaatan sumber daya dan biaya terkait selama fase validasi. 
   +  **Konfigurasi enkripsi** - opsional: 
     + **Aktifkan enkripsi artefak upgrade**: Aktifkan enkripsi saat istirahat saat menulis data ke jalur hasil. Jika Anda tidak ingin mengenkripsi artefak upgrade Anda, biarkan opsi ini tidak dicentang.

1.  Pilih **Jalankan** untuk memulai analisis peningkatan. Saat analisis sedang berjalan, Anda dapat melihat hasilnya di tab **Analisis Upgrade**. Jendela detail analisis akan menampilkan informasi tentang analisis serta tautan ke artefak peningkatan. 
   +  **Jalur hasil** - di sinilah ringkasan hasil dan skrip peningkatan disimpan. 
   +  **Skrip yang ditingkatkan di Amazon** S3 - lokasi skrip pemutakhiran di Amazon S3. Anda dapat melihat skrip sebelum menerapkan upgrade. 
   +  **Ringkasan pemutakhiran di Amazon S3** — lokasi ringkasan peningkatan di Amazon S3. Anda dapat melihat ringkasan pemutakhiran sebelum menerapkan pemutakhiran. 

1.  Ketika analisis pemutakhiran berhasil diselesaikan, Anda dapat menerapkan skrip pemutakhiran untuk meningkatkan pekerjaan Anda secara otomatis dengan memilih **Terapkan skrip yang ditingkatkan**. 

    Setelah diterapkan, versi AWS Glue akan diperbarui ke 4.0. Anda dapat melihat skrip baru di tab **Script**.   
![\[Tangkapan layar menunjukkan analisis peningkatan yang telah selesai. Tombol untuk Terapkan skrip yang ditingkatkan terlihat.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/upgrade-analysis-analysis-details-preview.png)

## Memahami ringkasan pemutakhiran Anda
<a name="auto-upgrade-analysis-summary"></a>

 Contoh ini menunjukkan proses upgrade pekerjaan AWS Glue dari versi 2.0 ke versi 4.0. Pekerjaan sampel membaca data produk dari bucket Amazon S3, menerapkan beberapa transformasi ke data menggunakan Spark SQL, dan kemudian menyimpan hasil yang diubah kembali ke bucket Amazon S3. 

### Kode asli (AWS Glue 2.0) - sebelum upgrade
<a name="w2aac37b7c20c21b5b1"></a>

```
from awsglue.transforms import *
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from pyspark.sql.types import *
from pyspark.sql.functions import *
from awsglue.job import Job
import json
from pyspark.sql.types import StructType

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)

gdc_database = "s3://aws-glue-scripts-us-east-1-gamma/demo-database/"
schema_location = (
    "s3://aws-glue-scripts-us-east-1-gamma/DataFiles/"
)

products_schema_string = spark.read.text(
    f"{schema_location}schemas/products_schema"
).first()[0]

product_schema = StructType.fromJson(json.loads(products_schema_string))

products_source_df = (
    spark.read.option("header", "true")
    .schema(product_schema)
    .option(
        "path",
        f"{gdc_database}products/",
    )
    .csv(f"{gdc_database}products/")
)

products_source_df.show()
products_temp_view_name = "spark_upgrade_demo_product_view"
products_source_df.createOrReplaceTempView(products_temp_view_name)

query = f"select {products_temp_view_name}.*, format_string('%0$s-%0$s', category, subcategory) as unique_category from {products_temp_view_name}"
products_with_combination_df = spark.sql(query)
products_with_combination_df.show()

products_with_combination_df.createOrReplaceTempView(products_temp_view_name)
product_df_attribution = spark.sql(
    f"""
SELECT *,
unbase64(split(product_name, ' ')[0]) as product_name_decoded,
unbase64(split(unique_category, '-')[1]) as subcategory_decoded
FROM {products_temp_view_name}
"""
)
product_df_attribution.show()


product_df_attribution.write.mode("overwrite").option("header", "true").option(
    "path", f"{gdc_database}spark_upgrade_demo_product_agg/"
).saveAsTable("spark_upgrade_demo_product_agg", external=True)

spark_upgrade_demo_product_agg_table_df = spark.sql(
    f"SHOW TABLE EXTENDED in default like 'spark_upgrade_demo_product_agg'"
)
spark_upgrade_demo_product_agg_table_df.show()
job.commit()
```

### Kode baru (Glue 4.0) - setelah upgrade
<a name="upgrade-analysis-example-new-code-glue-4"></a>

```
from awsglue.transforms import *
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from pyspark.sql.types import *
from pyspark.sql.functions import *
from awsglue.job import Job
import json
from pyspark.sql.types import StructType

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
# change 1
spark.conf.set("spark.sql.adaptive.enabled", "false")
# change 2
spark.conf.set("spark.sql.legacy.pathOptionBehavior.enabled", "true")
job = Job(glueContext)

gdc_database = "s3://aws-glue-scripts-us-east-1-gamma/demo-database/"
schema_location = (
    "s3://aws-glue-scripts-us-east-1-gamma/DataFiles/"
)

products_schema_string = spark.read.text(
    f"{schema_location}schemas/products_schema"
).first()[0]

product_schema = StructType.fromJson(json.loads(products_schema_string))

products_source_df = (
    spark.read.option("header", "true")
    .schema(product_schema)
    .option(
        "path",
        f"{gdc_database}products/",
    )
    .csv(f"{gdc_database}products/")
)

products_source_df.show()
products_temp_view_name = "spark_upgrade_demo_product_view"
products_source_df.createOrReplaceTempView(products_temp_view_name)

# change 3
query = f"select {products_temp_view_name}.*, format_string('%1$s-%1$s', category, subcategory) as unique_category from {products_temp_view_name}"
products_with_combination_df = spark.sql(query)
products_with_combination_df.show()

products_with_combination_df.createOrReplaceTempView(products_temp_view_name)
# change 4
product_df_attribution = spark.sql(
    f"""
SELECT *,
try_to_binary(split(product_name, ' ')[0], 'base64') as product_name_decoded,
try_to_binary(split(unique_category, '-')[1], 'base64') as subcategory_decoded
FROM {products_temp_view_name}
"""
)
product_df_attribution.show()


product_df_attribution.write.mode("overwrite").option("header", "true").option(
    "path", f"{gdc_database}spark_upgrade_demo_product_agg/"
).saveAsTable("spark_upgrade_demo_product_agg", external=True)

spark_upgrade_demo_product_agg_table_df = spark.sql(
    f"SHOW TABLE EXTENDED in default like 'spark_upgrade_demo_product_agg'"
)
spark_upgrade_demo_product_agg_table_df.show()
job.commit()
```

### Penjelasan ringkasan analisis
<a name="upgrade-analysis-explanation-summary"></a>

![\[Tangkapan layar menunjukkan ringkasan analisis Peningkatan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/upgrade-analysis-explanation-summary.png)


 Berdasarkan ringkasan, ada empat perubahan yang diusulkan oleh AWS Glue agar berhasil meningkatkan skrip dari AWS Glue 2.0 ke AWS Glue 4.0: 

1.  **Konfigurasi Spark SQL (spark.sql.adaptive.enabled)**: Perubahan ini untuk mengembalikan perilaku aplikasi sebagai fitur baru untuk eksekusi kueri adaptif Spark SQL diperkenalkan mulai Spark 3.2. Anda dapat memeriksa perubahan konfigurasi ini dan selanjutnya dapat mengaktifkan atau menonaktifkannya sesuai preferensi mereka. 

1.  **DataFrame Perubahan API**: Opsi jalur tidak dapat hidup berdampingan dengan DataFrameReader operasi lain seperti`load()`. Untuk mempertahankan perilaku sebelumnya, AWS Glue memperbarui skrip untuk menambahkan konfigurasi SQL baru **(spark.sql.legacy. pathOptionBehavior.diaktifkan).** 

1.  **Spark SQL API change**: Perilaku `strfmt` in `format_string(strfmt, obj, ...)` telah diperbarui untuk melarang `0$` sebagai argumen pertama. Untuk memastikan kompatibilitas, AWS Glue telah memodifikasi skrip untuk digunakan `1$` sebagai argumen pertama. 

1.  **Perubahan API SQL Spark**: `unbase64` Fungsi ini tidak mengizinkan input string yang salah bentuk. Untuk mempertahankan perilaku sebelumnya, AWS Glue memperbarui skrip untuk menggunakan `try_to_binary` fungsi. 

## Menghentikan analisis peningkatan yang sedang berlangsung
<a name="auto-upgrade-stopping-analysis"></a>

 Anda dapat membatalkan analisis peningkatan yang sedang berlangsung atau hanya menghentikan analisis. 

1.  Pilih tab **Analisis Upgrade**. 

1.  Pilih pekerjaan yang sedang berjalan, lalu pilih **Stop**. Ini akan menghentikan analisis. Anda kemudian dapat menjalankan analisis peningkatan lain pada pekerjaan yang sama.   
![\[Tangkapan layar menunjukkan tab Analisis Tingkatkan dengan pekerjaan yang dipilih. Pekerjaan masih berjalan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/upgrade-analysis-tab.png)

## Pertimbangan-pertimbangan
<a name="upgrade-analysis-considerations"></a>

 Saat Anda mulai menggunakan Spark Upgrade, ada beberapa aspek penting yang perlu dipertimbangkan untuk penggunaan layanan yang optimal. 
+  **Lingkup dan Batasan Layanan**: Rilis saat ini berfokus pada peningkatan PySpark kode dari AWS Glue versi 2.0 ke versi 5.0. Pada saat ini, layanan menangani PySpark kode yang tidak bergantung pada dependensi pustaka tambahan. Anda dapat menjalankan peningkatan otomatis hingga 10 pekerjaan secara bersamaan di AWS akun, memungkinkan Anda meningkatkan beberapa pekerjaan secara efisien sambil menjaga stabilitas sistem. 
  +  Hanya PySpark pekerjaan yang didukung. 
  +  Analisis peningkatan akan habis waktu setelah 24 jam. 
  +  Hanya satu analisis peningkatan aktif yang dapat dijalankan pada satu waktu untuk satu pekerjaan. Pada tingkat akun, hingga 10 analisis peningkatan aktif dapat dijalankan secara bersamaan. 
+  **Mengoptimalkan Biaya Selama Proses Peningkatan**: Karena Peningkatan Spark menggunakan AI generatif untuk memvalidasi paket peningkatan melalui beberapa iterasi, dengan setiap iterasi berjalan sebagai pekerjaan AWS Glue di akun Anda, penting untuk mengoptimalkan konfigurasi menjalankan pekerjaan validasi untuk efisiensi biaya. Untuk mencapai hal ini, sebaiknya tentukan Konfigurasi Jalankan saat memulai Analisis Peningkatan sebagai berikut: 
  +  Gunakan akun pengembang non-produksi dan pilih contoh kumpulan data tiruan yang mewakili data produksi Anda tetapi ukurannya lebih kecil untuk validasi dengan Peningkatan Spark. 
  +  Menggunakan sumber daya komputasi berukuran tepat, seperti pekerja G.1X, dan memilih jumlah pekerja yang sesuai untuk memproses data sampel Anda. 
  +  Mengaktifkan auto-scaling pekerjaan AWS Glue bila berlaku untuk menyesuaikan sumber daya secara otomatis berdasarkan beban kerja. 

   Misalnya, jika pekerjaan produksi Anda memproses terabyte data dengan 20 pekerja G.2X, Anda dapat mengonfigurasi pekerjaan pemutakhiran untuk memproses beberapa gigabyte data representatif dengan 2 pekerja G.2X dan auto-scaling diaktifkan untuk validasi. 
+  **Praktik Terbaik**: Kami sangat menyarankan untuk memulai perjalanan peningkatan Anda dengan pekerjaan non-produksi. Pendekatan ini memungkinkan Anda untuk membiasakan diri dengan alur kerja peningkatan, dan memahami bagaimana layanan menangani berbagai jenis pola kode Spark. 
+  **Alarm dan notifikasi**: Saat menggunakan fitur peningkatan AI Generatif pada suatu pekerjaan, pastikan bahwa alarms/notifications untuk pekerjaan yang gagal berjalan dimatikan. Selama proses upgrade, mungkin ada hingga 10 pekerjaan gagal berjalan di akun Anda sebelum artefak yang ditingkatkan disediakan. 
+  **Aturan deteksi anomali: Matikan aturan** deteksi anomali pada Job yang sedang ditingkatkan juga, karena data yang ditulis ke folder keluaran selama pekerjaan perantara berjalan mungkin tidak dalam format yang diharapkan saat validasi pemutakhiran sedang berlangsung. 
+  **Gunakan analisis peningkatan dengan pekerjaan idempoten**: Gunakan analisis peningkatan dengan pekerjaan idempoten untuk memastikan setiap upaya menjalankan pekerjaan validasi berikutnya serupa dengan yang sebelumnya, dan tidak mengalami masalah. Pekerjaan idempoten adalah pekerjaan yang dapat dijalankan beberapa kali dengan data input yang sama, dan mereka akan menghasilkan output yang sama setiap kali. Saat menggunakan upgrade Generative AI untuk Apache Spark in AWS Glue, layanan akan menjalankan beberapa iterasi pekerjaan Anda sebagai bagian dari proses validasi. Selama setiap iterasi, itu akan membuat perubahan pada kode dan konfigurasi Spark Anda untuk memvalidasi paket peningkatan. Jika pekerjaan Spark Anda tidak idempoten, menjalankannya beberapa kali dengan data input yang sama dapat menyebabkan masalah. 

## Wilayah yang didukung
<a name="upgrade-analysis-supported-regions"></a>

Peningkatan AI generatif untuk Apache Spark tersedia di wilayah berikut:
+ **Asia Pasifik**: Tokyo (ap-northeast-1), Seoul (ap-northeast-2), Mumbai (ap-southeast-1), Singapura (ap-southeast-1), dan Sydney (ap-southeast-2)
+ **Amerika Utara**: Kanada (ca-central-1)
+ **Eropa**: Frankfurt (eu-central-1), Stockholm (eu-north-1), Irlandia (eu-west-1), London (eu-west-2), dan Paris (eu-west-3)
+ **Amerika Selatan**: São Paulo (sa-east-1)
+ **Amerika Serikat**: Virginia Utara (us-east-1), Ohio (us-east-2), dan Oregon (us-west-2)

## Inferensi lintas wilayah dalam Peningkatan Spark
<a name="w2aac37b7c20c37"></a>

 Peningkatan Spark didukung oleh Amazon Bedrock dan memanfaatkan inferensi lintas wilayah (CRIS). Dengan CRIS, Spark Upgrades akan secara otomatis memilih wilayah optimal dalam geografi Anda (seperti yang dijelaskan secara lebih rinci di [sini](https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html)) untuk memproses permintaan inferensi Anda, memaksimalkan sumber daya komputasi yang tersedia dan ketersediaan model, dan memberikan pengalaman pelanggan terbaik. Tidak ada biaya tambahan untuk menggunakan inferensi lintas wilayah. 

 Permintaan inferensi lintas wilayah disimpan dalam AWS Wilayah yang merupakan bagian dari geografi tempat data awalnya berada. Misalnya, permintaan yang dibuat di AS disimpan di dalam AWS Wilayah di AS. Meskipun data tetap disimpan hanya di wilayah utama, saat menggunakan inferensi lintas wilayah, permintaan input dan hasil keluaran Anda dapat bergerak di luar wilayah utama Anda. Semua data akan dikirimkan dienkripsi di seluruh jaringan aman Amazon. 

# Bekerja dengan pekerjaan Spark di AWS Glue
<a name="etl-jobs-section"></a>

Memberikan informasi tentang AWS Glue untuk pekerjaan Spark ETL.

**Topics**
+ [Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue](aws-glue-programming-etl-glue-arguments.md)
+ [AWS Glue Spark dan pekerjaan PySpark](spark_and_pyspark.md)
+ [AWS Glue jenis pekerja](worker-types.md)
+ [Lowongan kerja Streaming ETL di AWS Glue](add-job-streaming.md)
+ [Rekam pencocokan dengan AWS Lake Formation FindMatches](machine-learning.md)
+ [Migrasi program Apache Spark ke AWS Glue](glue-author-migrate-apache-spark.md)

# Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue
<a name="aws-glue-programming-etl-glue-arguments"></a>

Saat membuat pekerjaan AWS Glue, Anda menetapkan beberapa bidang standar, seperti `Role` dan`WorkerType`. Anda dapat memberikan informasi konfigurasi tambahan melalui `Argument` bidang (**Parameter Pekerjaan** di konsol). Di bidang ini, Anda dapat memberikan pekerjaan AWS Glue dengan argumen (parameter) yang tercantum dalam topik ini. 

 Untuk informasi selengkapnya tentang AWS Glue Job API, lihat[Lowongan](aws-glue-api-jobs-job.md). 

**catatan**  
 Argumen Job memiliki batas ukuran maksimum 260KB. Pemeriksaan validasi akan memunculkan kesalahan jika ukuran argumen lebih besar dari 260KB. 



## Mengatur parameter pekerjaan
<a name="w2aac37c11b8c11"></a>

Anda dapat mengonfigurasi pekerjaan melalui konsol di tab **Detail pekerjaan**, di bawah judul **Parameter Pekerjaan**. Anda juga dapat mengonfigurasi pekerjaan AWS CLI melalui pengaturan `DefaultArguments` atau `NonOverridableArguments` pekerjaan, atau pengaturan `Arguments` pada pekerjaan. Argumen yang ditetapkan pada pekerjaan akan diteruskan setiap kali pekerjaan dijalankan, sedangkan argumen yang ditetapkan pada job run hanya akan diteruskan untuk menjalankan individu tersebut. 

Misalnya, berikut ini adalah sintaks untuk menjalankan pekerjaan menggunakan `--arguments` untuk menetapkan parameter pekerjaan.

```
$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'
```

## Mengakses parameter pekerjaan
<a name="w2aac37c11b8c13"></a>

Saat menulis skrip AWS Glue, Anda mungkin ingin mengakses nilai parameter pekerjaan untuk mengubah perilaku kode Anda sendiri. Kami menyediakan metode pembantu untuk melakukannya di perpustakaan kami. Metode ini menyelesaikan nilai parameter job run yang mengesampingkan nilai parameter pekerjaan. Saat menyelesaikan parameter yang ditetapkan di beberapa tempat, job `NonOverridableArguments` akan menggantikan job run`Arguments`, yang akan menggantikan job. `DefaultArguments`

**Dengan Python:**

Dalam pekerjaan Python, kami menyediakan fungsi bernama. `getResolvedParameters` Untuk informasi selengkapnya, lihat [Mengakses parameter menggunakan `getResolvedOptions`](aws-glue-api-crawler-pyspark-extensions-get-resolved-options.md). Parameter Job tersedia dalam `sys.argv` variabel.

**Dalam Scala:**

Dalam pekerjaan Scala, kami menyediakan objek bernama`GlueArgParser`. Untuk informasi selengkapnya, lihat [AWS GlueScala GlueArgParser APIs](glue-etl-scala-apis-glue-util-glueargparser.md). Parameter Job tersedia dalam `sysArgs` variabel.

## Referensi parameter Job
<a name="job-parameter-reference"></a>

**AWS Glue mengenali nama argumen berikut yang dapat Anda gunakan untuk mengatur lingkungan skrip untuk pekerjaan dan pekerjaan Anda:**

**`--additional-python-modules`**  
 Daftar dibatasi koma yang mewakili satu set paket Python yang akan diinstal. Anda dapat menginstal paket dari PyPI atau menyediakan distribusi khusus. Entri paket PyPI akan dalam format`package==version`, dengan nama PyPI dan versi paket target Anda. Entri distribusi kustom adalah jalur S3 ke distribusi.  
Entri menggunakan pencocokan versi Python untuk mencocokkan paket dan versi. Ini berarti Anda harus menggunakan dua tanda yang sama, seperti`==`. Ada operator pencocokan versi lain, untuk informasi lebih lanjut lihat [PEP 440](https://peps.python.org/pep-0440/#version-matching).   
Untuk meneruskan opsi instalasi modul ke`pip3`, gunakan [--python-modules-installer-option](#python-modules-installer-option) parameter.

**`--auto-scale-within-microbatch`**  
Nilai default-nya adalah betul. Parameter ini hanya dapat digunakan untuk pekerjaan streaming AWS Glue, yang memproses data streaming dalam serangkaian batch mikro, dan penskalaan otomatis harus diaktifkan. Saat menyetel nilai ini ke false, nilai ini menghitung rata-rata pergerakan eksponensial durasi batch untuk batch mikro yang diselesaikan dan membandingkan nilai ini dengan ukuran jendela untuk menentukan apakah akan meningkatkan atau menurunkan jumlah pelaksana. Penskalaan hanya terjadi ketika batch mikro selesai. Saat menyetel nilai ini ke true, selama batch mikro, nilai ini meningkat ketika jumlah tugas Spark tetap sama selama 30 detik, atau pemrosesan batch saat ini lebih besar dari ukuran jendela. Jumlah eksekutor akan turun jika eksekutor telah menganggur selama lebih dari 60 detik, atau rata-rata pergerakan eksponensial durasi batch rendah. 

**`--class`**  
Kelas Scala yang berfungsi sebagai titik masuk untuk skrip Scala Anda. Ini hanya berlaku jika `--job-language` Anda diatur ke `scala`.

**`--continuous-log-conversionPattern`**  
Menentukan pola log konversi kustom untuk pekerjaan yang diaktifkan untuk logging berkelanjutan. Pola konversi hanya berlaku untuk log driver dan log pelaksana saja. Itu tidak mempengaruhi bilah kemajuan AWS Glue.

**`--continuous-log-logGroup`**  
Menentukan nama grup CloudWatch log Amazon kustom untuk pekerjaan yang diaktifkan untuk logging berkelanjutan.

**`--continuous-log-logStreamPrefix`**  
 Menentukan awalan aliran CloudWatch log kustom untuk pekerjaan diaktifkan untuk logging berkelanjutan.

**`--customer-driver-env-vars` dan `--customer-executor-env-vars`**  
Parameter ini mengatur variabel lingkungan pada sistem operasi masing-masing untuk setiap pekerja (driver atau pelaksana). Anda dapat menggunakan parameter ini saat membangun platform dan kerangka kerja khusus di atas AWS Glue, untuk memungkinkan pengguna Anda menulis pekerjaan di atasnya. Mengaktifkan dua flag ini akan memungkinkan Anda untuk mengatur variabel lingkungan yang berbeda pada driver dan eksekutor masing-masing tanpa harus menyuntikkan logika yang sama dalam skrip pekerjaan itu sendiri.   
**Contoh penggunaan**  
Berikut ini adalah contoh penggunaan parameter ini:

```
"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"",
"—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"
```
Menyetel ini dalam argumen job run sama dengan menjalankan perintah berikut:  
Di pengemudi:  
+ ekspor KEY1 pelanggan\$1 = VAL1
+ ekspor PELANGGAN\$1 KEY2 = “val2, val2 val2"
Dalam pelaksana:  
+ ekspor KEY3 pelanggan\$1 = VAL3
Kemudian, dalam skrip pekerjaan itu sendiri, Anda dapat mengambil variabel lingkungan menggunakan `os.environ.get("CUSTOMER_KEY1")` atau`System.getenv("CUSTOMER_KEY1")`.   
**Sintaks yang ditegakkan**  
Perhatikan standar berikut saat mendefinisikan variabel lingkungan:
+ Setiap kunci harus memiliki`CUSTOMER_ prefix`.

  Misalnya: for`"CUSTOMER_KEY3=VAL3,KEY4=VAL4"`, `KEY4=VAL4` akan diabaikan dan tidak disetel.
+ Setiap pasangan kunci dan nilai harus digambarkan dengan koma tunggal.

  Misalnya: `"CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"`
+ Jika “nilai” memiliki spasi atau koma, maka itu harus didefinisikan dalam kutipan.

  Misalnya: `CUSTOMER_KEY2=\"val2,val2 val2\"`
Sintaks ini secara dekat memodelkan standar pengaturan variabel lingkungan bash.

**`--datalake-formats` **  
Didukung di AWS Glue 3.0 dan versi yang lebih baru.  
Menentukan kerangka data lake untuk digunakan. AWS Glue menambahkan file JAR yang diperlukan untuk kerangka kerja yang Anda tentukan ke dalam. `classpath` Untuk informasi selengkapnya, lihat [Menggunakan kerangka kerja data lake dengan pekerjaan AWS Glue ETL](aws-glue-programming-etl-datalake-native-frameworks.md).  
Anda dapat menentukan satu atau lebih dari nilai-nilai berikut, dipisahkan dengan koma:  
+ `hudi`
+ `delta`
+ `iceberg`
Misalnya, berikan argumen berikut untuk menentukan ketiga kerangka kerja.  

```
'--datalake-formats': 'hudi,delta,iceberg'
```

**`--disable-proxy-v2`**  
 Nonaktifkan proxy layanan untuk mengizinkan panggilan AWS layanan ke Amazon S3, CloudWatch, dan AWS Glue yang berasal dari skrip Anda melalui VPC Anda. Untuk informasi selengkapnya, lihat [Mengonfigurasi AWS panggilan untuk melalui VPC Anda](https://docs.aws.amazon.com/glue/latest/dg/connection-VPC-disable-proxy.html). Untuk menonaktifkan proxy layanan, atur nilai paramater ini ke`true`.

**`--enable-auto-scaling`**  
Mengaktifkan penskalaan otomatis dan penagihan per pekerja saat Anda menetapkan nilainya. `true`

**`--enable-continuous-cloudwatch-log`**  
Memungkinkan pencatatan berkelanjutan real-time untuk pekerjaan AWS Glue. Anda dapat melihat log pekerjaan Apache Spark real-time. CloudWatch

**`--enable-continuous-log-filter`**  
Menentukan filter standar (`true`) atau tidak ada filter (`false`) saat Anda membuat atau mengedit pekerjaan diaktifkan untuk logging berkelanjutan. Memilih filter standar memangkas pesan log detak jantung Apache Spark driver/executor dan Apache Hadoop YARN yang tidak berguna. Memilih tanpa filter akan memberikan semua pesan log.

**`--enable-glue-datacatalog`**  
Memungkinkan Anda menggunakan Katalog Data AWS Glue sebagai metastore Apache Spark Hive. Untuk mengaktifkan fitur ini, atur nilainya ke`true`.

**`--enable-job-insights`**  
Mengaktifkan pemantauan analisis kesalahan tambahan dengan wawasan AWS Glue job run. Lihat perinciannya di [Pemantauan dengan wawasan menjalankan AWS Glue pekerjaan](monitor-job-insights.md). Secara default, nilai disetel ke `true` dan wawasan job run diaktifkan.  
Opsi ini tersedia untuk AWS Glue versi 2.0 dan 3.0.

**`--enable-lakeformation-fine-grained-access`**  
Mengaktifkan kontrol akses berbutir halus untuk pekerjaan Glue AWS . Untuk informasi selengkapnya, lihat [Menggunakan AWS Glue dengan AWS Lake Formation kontrol akses berbutir halus](security-lf-enable.md).

**`--enable-metrics`**  
Mengaktifkan pengumpulan metrik untuk pembuatan profil pekerjaan untuk menjalankan pekerjaan ini. Metrik ini tersedia di konsol AWS Glue dan CloudWatch konsol Amazon. Nilai parameter ini tidak relevan. Untuk mengaktifkan fitur ini, Anda dapat memberikan parameter ini dengan nilai apa pun, tetapi `true` disarankan untuk kejelasan. Untuk menonaktifkan fitur ini, hapus parameter ini dari konfigurasi pekerjaan Anda.

**`--enable-observability-metrics`**  
 Mengaktifkan satu set metrik Observability untuk menghasilkan wawasan tentang apa yang terjadi di dalam setiap pekerjaan yang dijalankan di halaman Job Runs Monitoring di bawah AWS Glue console dan konsol. Amazon CloudWatch Untuk mengaktifkan fitur ini, atur nilai parameter ini ke true. Untuk menonaktifkan fitur ini, atur ke `false` atau hapus parameter ini dari konfigurasi pekerjaan Anda. 

**`--enable-rename-algorithm-v2`**  
Menetapkan EMRFS mengubah nama algoritma versi ke versi 2. Ketika tugas Spark menggunakan mode menimpa partisi dinamis, ada kemungkinan bahwa sebuah partisi duplikat yang dibuat. Misalnya, Anda dapat berakhir dengan partisi duplikat seperti `s3://bucket/table/location/p1=1/p1=1`. Di sini, P1 adalah partisi yang sedang ditimpa. Mengubah nama algoritme versi 2 akan memperbaiki masalah ini.  
Opsi ini hanya tersedia di AWS Glue versi 1.0.

**`--enable-s3-parquet-optimized-committer`**  
Mengaktifkan committer yang dioptimalkan EMRFS S3 untuk menulis data Parket ke Amazon S3. Anda dapat memasok parameter/value pasangan melalui konsol AWS Glue saat membuat atau memperbarui pekerjaan AWS Glue. Mengatur nilai ke **true** akan mengaktifkan committer. Secara default, bendera dihidupkan di AWS Glue 3.0 dan dimatikan di AWS Glue 2.0.  
Untuk informasi selengkapnya, lihat [Menggunakan Committer yang Dioptimalkan-S3 EMRFS](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-optimized-committer.html).

**`--enable-spark-ui`**  
Saat diatur ke`true`, aktifkan fitur untuk menggunakan Spark UI untuk memantau dan men-debug pekerjaan AWS Glue ETL.

**`--executor-cores`**  
Jumlah tugas percikan yang dapat berjalan secara paralel. Opsi ini didukung pada AWS Glue 3.0\$1. Nilai tidak boleh melebihi 2x jumlah v CPUs pada tipe pekerja, yaitu 8 on, 16 on`G.1X`, 32 on`G.2X`, 64 on`G.4X`, 96 on`G.8X`, 128 on `G.12X``G.16X`, dan 8 on`R.1X`, 16 on`R.2X`, 32 on`R.4X`, 64 on`R.8X`. Anda harus berhati-hati saat memperbarui konfigurasi ini karena dapat memengaruhi kinerja pekerjaan karena peningkatan paralelisme tugas menyebabkan memori, tekanan disk, serta dapat menghambat sistem sumber dan target (misalnya: ini akan menyebabkan lebih banyak koneksi bersamaan di Amazon RDS).

**`--extra-files`**  
Amazon S3 melakukan path ke file tambahan, seperti file konfigurasi yang AWS Glue salin ke direktori kerja skrip Anda pada node driver sebelum menjalankannya. Beberapa nilai harus path lengkap yang dipisahkan dengan sebuah koma (`,`). Nilai dapat berupa file individual atau lokasi direktori. Opsi ini tidak didukung untuk jenis pekerjaan Python Shell.

**`--extra-jars`**  
Amazon S3 mengalihkan ke file tambahan yang disalin AWS Glue ke driver dan pelaksana. AWS Glue juga menambahkan file-file ini ke classpath Java sebelum menjalankan skrip Anda. Beberapa nilai harus path lengkap yang dipisahkan dengan sebuah koma (`,`). Ekstensi tidak perlu `.jar`

**`--extra-py-files`**  
Jalur Amazon S3 ke modul Python tambahan yang ditambahkan AWS Glue ke jalur Python pada node driver sebelum menjalankan skrip Anda. Beberapa nilai harus path lengkap yang dipisahkan dengan sebuah koma (`,`). Hanya mendukung file individu, tidak mendukung path direktori.

**`--job-bookmark-option`**  
Mengontrol perilaku bookmark pekerjaan. Nilai opsi berikut dapat diatur.    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
Misalnya, untuk mengaktifkan bookmark tugas, berikan argumen berikut.  

```
'--job-bookmark-option': 'job-bookmark-enable'
```

**`--job-language`**  
Bahasa pemrograman skrip. Nilai ini harus berupa `scala` atau `python`. Jika parameter ini tidak ada, maka nilai default-nya adalah `python`.

**`--python-modules-installer-option`**  
String plaintext yang mendefinisikan opsi yang akan diteruskan `pip3` saat menginstal modul dengan. [--additional-python-modules](#additional-python-modules) Berikan opsi seperti yang Anda lakukan di baris perintah, dipisahkan oleh spasi dan diawali dengan tanda hubung. Untuk informasi lebih lanjut tentang penggunaan, lihat[Menginstal modul Python tambahan dengan pip di AWS Glue 2.0 atau yang lebih baru](aws-glue-programming-python-libraries.md#addl-python-modules-support).  
Opsi ini tidak didukung untuk pekerjaan AWS Glue saat Anda menggunakan Python 3.9.

**`--scriptLocation`**  
Lokasi Amazon Simple Storage Service (Amazon S3) tempat skrip ETL Anda berada (dalam formulir). `s3://path/to/my/script.py` Parameter ini menimpa lokasi skrip yang ditetapkan dalam objek `JobCommand`.

**`--spark-event-logs-path`**  
Menentukan jalur Amazon S3. Saat menggunakan fitur pemantauan Spark UI, Glue AWS melakukan mem-flushing peristiwa Spark log ke Path Amazon S3 ini setiap 30 detik ke sebuah bucket yang dapat digunakan sebagai direktori sementara untuk menyimpan peristiwa Spark UI.

**`--TempDir`**  
Menentukan jalur Amazon S3 ke bucket yang dapat digunakan sebagai direktori sementara untuk pekerjaan itu.  
Misalnya, untuk menetapkan sebuah direktori sementara, berikan argumen berikut.  

```
'--TempDir': 's3-path-to-directory'
```
AWS Glue membuat ember sementara untuk pekerjaan jika ember belum ada di Wilayah. Bucket ini mungkin mengizinkan akses publik. Anda dapat memodifikasi bucket di Amazon S3 untuk menyetel blok akses publik, atau menghapus bucket nanti setelah semua pekerjaan di Wilayah tersebut selesai.

**`--use-postgres-driver`**  
Saat menyetel nilai ini`true`, ini memprioritaskan driver Postgres JDBC di jalur kelas untuk menghindari konflik dengan driver Amazon Redshift JDBC. Opsi ini hanya tersedia di AWS Glue versi 2.0.

**`--user-jars-first`**  
Saat menyetel nilai ini`true`, ini memprioritaskan file JAR tambahan pelanggan di classpath. Opsi ini hanya tersedia di AWS Glue versi 2.0 atau yang lebih baru.

**`--conf`**  
Mengontrol parameter konfigurasi Spark. Ini untuk kasus penggunaan lanjutan.

**`--encryption-type`**  
Parameter warisan. Perilaku yang sesuai harus dikonfigurasi menggunakan konfigurasi keamanan. untuk informasi selengkapnya tentang konfigurasi keamanan, lihat. [Mengenkripsi data yang ditulis oleh AWS Glue](encryption-security-configuration.md)

AWS Glue menggunakan argumen berikut secara internal dan Anda tidak boleh menggunakannya:
+ `--debug`- Internal ke AWS Glue. Jangan diatur.
+ `--mode`- Internal ke AWS Glue. Jangan diatur.
+ `--JOB_NAME`- Internal ke AWS Glue. Jangan diatur.
+ `--endpoint`- Internal ke AWS Glue. Jangan diatur.



## 
<a name="w2aac37c11b8c17"></a>

 AWS Glue mendukung bootstrap lingkungan dengan `site` modul Python yang digunakan `sitecustomize` untuk melakukan kustomisasi khusus situs. Bootstrapping fungsi initilisasi Anda sendiri direkomendasikan untuk kasus penggunaan lanjutan saja dan didukung atas dasar upaya terbaik di Glue 4.0. AWS 

 Awalan variabel lingkungan,`GLUE_CUSTOMER`, dicadangkan untuk penggunaan pelanggan. 

# AWS Glue Spark dan pekerjaan PySpark
<a name="spark_and_pyspark"></a>

AWS Glue mendukung Spark dan PySpark pekerjaan. Pekerjaan Spark dijalankan di lingkungan Apache Spark yang dikelola oleh. AWS Glue Tugas ini memproses data dalam batch. Sebuah tugas ETL streaming mirip dengan tugas Spark, kecuali bahwa ia melakukan ETL pada aliran data. Menggunakan kerangka kerja Apache Spark Structured Streaming. Beberapa fitur tugas Spark tidak tersedia untuk streaming tugas ETL.

Bagian berikut memberikan informasi tentang AWS Glue Spark dan PySpark pekerjaan.

**Topics**
+ [Mengkonfigurasi properti pekerjaan untuk pekerjaan Spark di AWS Glue](add-job.md)
+ [Mengedit skrip Spark di konsol AWS Glue](edit-script-spark.md)
+ [Pekerjaan (warisan)](console-edit-script.md)
+ [Melacak data yang diproses menggunakan bookmark pekerjaan](monitor-continuations.md)
+ [Menyimpan data shuffle Spark](monitor-spark-shuffle-manager.md)
+ [Lowongan kerja Monitoring AWS Glue Spark](monitor-spark.md)
+ [Pemecahan masalah AI generatif untuk Apache Spark in Glue AWS](troubleshoot-spark.md)
+ [Menggunakan tampilan terwujud dengan AWS Glue](materialized-views.md)

# Mengkonfigurasi properti pekerjaan untuk pekerjaan Spark di AWS Glue
<a name="add-job"></a>

Saat menentukan pekerjaan di AWS Glue konsol, Anda memberikan nilai properti untuk mengontrol lingkungan AWS Glue runtime. 

## Mendefinisikan properti pekerjaan untuk pekerjaan Spark
<a name="create-job"></a>

Daftar berikut menjelaskan properti-properti tugas Spark. Untuk properti dari tugas shell Python, lihat [Mendefinisikan properti pekerjaan untuk pekerjaan shell Python](add-job-python.md#create-job-python-properties). Untuk properti dari tugas ETL streaming, lihat [Mendefinisikan properti pekerjaan untuk pekerjaan ETL streaming](add-job-streaming.md#create-job-streaming-properties).

Properti tercantum dalam urutan kemunculannya di **Add job** wizard di AWS Glue konsol.

**Nama**  
Berikan string UTF-8 dengan panjang maksimum 255 karakter. 

**Deskripsi**  
Berikan deskripsi opsional hingga 2048 karakter. 

**IAM Role**  
Tentukan IAM role yang digunakan untuk otorisasi ke sumber daya yang digunakan untuk menjalankan tugas dan mengakses penyimpanan data. Untuk informasi selengkapnya tentang izin untuk menjalankan pekerjaan di AWS Glue, lihat[Manajemen identitas dan akses untuk AWS Glue](security-iam.md).

**Tipe**  
Jenis pekerjaan ETL. Ini diatur secara otomatis berdasarkan jenis sumber data yang Anda pilih.  
+ **Spark** menjalankan skrip Apache Spark ETL dengan perintah pekerjaan. `glueetl`
+ **Spark Streaming** menjalankan skrip ETL streaming Apache Spark dengan perintah pekerjaan. `gluestreaming` Untuk informasi selengkapnya, lihat [Lowongan kerja Streaming ETL di AWS Glue](add-job-streaming.md).
+ **Shell Python** menjalankan skrip Python dengan perintah job. `pythonshell` Untuk informasi selengkapnya, lihat [Mengonfigurasi properti pekerjaan untuk pekerjaan shell Python di AWS Glue](add-job-python.md).

** Versi AWS Glue **  
AWS Glue versi menentukan versi Apache Spark dan Python yang tersedia untuk pekerjaan, seperti yang ditentukan dalam tabel berikut.      
<a name="table-glue-versions"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/add-job.html)

**Bahasa**  
Kode dalam skrip ETL mendefinisikan logika tugas Anda. Skrip dapat dikodekan dengan Python atau Scala. Anda dapat memilih apakah skrip yang dijalankan pekerjaan dihasilkan oleh AWS Glue atau disediakan oleh Anda. Anda menyediakan nama skrip dan lokasi di Amazon Simple Storage Service (Amazon S3). Konfirmasi bahwa tidak ada file dengan nama yang sama sebagai direktori skrip pada path. Untuk mem-pelajari selengkapnya tentang menulis skrip, lihat [AWS Glue panduan pemrograman](edit-script.md).

**Jenis pekerja**  
Jenis-jenis pekerja berikut tersedia:  
Sumber daya yang tersedia pada AWS Glue pekerja diukur dalam DPUs. DPU adalah ukuran relatif daya pemrosesan yang terdiri dari 4 v CPUs kapasitas komputasi dan memori 16 GB.  
+ **G.025X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 0, 25 DPU (2 vCPUs, 4 GB memori) dengan 84GB disk (sekitar 34GB gratis). Kami merekomendasikan jenis pekerja ini untuk pekerjaan streaming volume rendah. Jenis pekerja ini hanya tersedia untuk pekerjaan streaming AWS Glue versi 3.0 atau yang lebih baru.
+ **G.1X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 1 DPU (4 vCPUs, memori 16 GB) dengan disk 94GB (sekitar 44GB gratis). Kami merekomendasikan jenis pekerja ini untuk beban kerja seperti transformasi data, gabungan, dan kueri, untuk menawarkan cara yang skalabel dan hemat biaya untuk menjalankan sebagian besar pekerjaan.
+ **G.2X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 2 DPU (8 vCPUs, memori 32 GB) dengan disk 138GB (sekitar 78GB gratis). Kami merekomendasikan jenis pekerja ini untuk beban kerja seperti transformasi data, gabungan, dan kueri, untuk menawarkan cara yang skalabel dan hemat biaya untuk menjalankan sebagian besar pekerjaan.
+ **G.4X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 4 DPU (memori 16 vCPUs, 64 GB) dengan disk 256GB (sekitar 230GB gratis). Kami merekomendasikan jenis pekerja ini untuk pekerjaan yang beban kerjanya berisi transformasi, agregasi, gabungan, dan kueri Anda yang paling menuntut. 
+ **G.8X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 8 DPU (memori 32 vCPUs, 128 GB) dengan disk 512GB (sekitar 485GB gratis). Kami merekomendasikan jenis pekerja ini untuk pekerjaan yang beban kerjanya berisi transformasi, agregasi, gabungan, dan kueri Anda yang paling menuntut.
+ **G.12X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 12 DPU (memori 48 vCPUs, 192 GB) dengan disk 768GB (sekitar 741GB gratis). Kami merekomendasikan jenis pekerja ini untuk pekerjaan dengan beban kerja yang sangat besar dan intensif sumber daya yang membutuhkan kapasitas komputasi yang signifikan. 
+ **G.16X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 16 DPU (64 vCPUs, 256 GB memori) dengan disk 1024GB (sekitar 996GB gratis). Kami merekomendasikan jenis pekerja ini untuk pekerjaan dengan beban kerja terbesar dan paling intensif sumber daya yang membutuhkan kapasitas komputasi maksimum. 
+ **R.1X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 1 DPU dengan konfigurasi yang dioptimalkan untuk memori. Kami merekomendasikan jenis pekerja ini untuk beban kerja intensif memori yang sering mengalami out-of-memory kesalahan atau memerlukan rasio tinggi. memory-to-CPU 
+ **R.2X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 2 DPU dengan konfigurasi yang dioptimalkan untuk memori. Kami merekomendasikan jenis pekerja ini untuk beban kerja intensif memori yang sering mengalami out-of-memory kesalahan atau memerlukan rasio tinggi. memory-to-CPU 
+ **R.4X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 4 DPU dengan konfigurasi yang dioptimalkan untuk memori. Kami merekomendasikan jenis pekerja ini untuk beban kerja intensif memori besar yang sering mengalami out-of-memory kesalahan atau memerlukan rasio tinggi. memory-to-CPU 
+ **R.8X** — Ketika Anda memilih jenis ini, maka Anda juga memberikan nilai untuk **Jumlah pekerja**. Setiap pekerja memetakan ke 8 DPU dengan konfigurasi yang dioptimalkan untuk memori. Kami merekomendasikan jenis pekerja ini untuk beban kerja intensif memori yang sangat besar yang sering mengalami out-of-memory kesalahan atau memerlukan rasio tinggi. memory-to-CPU 
**Spesifikasi Jenis Pekerja**  
Tabel berikut memberikan spesifikasi rinci untuk semua jenis pekerja G yang tersedia:    
**Spesifikasi Tipe Pekerja G**    
<a name="table-worker-specifications"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/add-job.html)
**Penting:** Jenis pekerja G.12X dan G.16X, serta semua tipe pekerja R (R.1X hingga R.8X), memiliki latensi startup yang lebih tinggi.  
Anda dikenakan tarif per jam berdasarkan jumlah yang DPUs digunakan untuk menjalankan pekerjaan ETL Anda. Untuk informasi lebih lanjut, lihat halaman [harga AWS Glue](https://aws.amazon.com/glue/pricing/).  
Untuk AWS Glue versi 1.0 atau pekerjaan sebelumnya, saat Anda mengonfigurasi pekerjaan menggunakan konsol dan menentukan **jenis **Standar** Pekerja**, **Kapasitas maksimum** diatur dan **Jumlah pekerja** menjadi nilai **Kapasitas maksimum** - 1. Jika Anda menggunakan AWS Command Line Interface (AWS CLI) atau AWS SDK, Anda dapat menentukan parameter **Kapasitas maks**, atau Anda dapat menentukan **jenis Pekerja** dan **Jumlah pekerja**.  
Untuk AWS Glue versi 2.0 atau pekerjaan yang lebih baru, Anda tidak dapat menentukan **Kapasitas maksimum**. Sebaliknya, Anda harus menentukan **Jenis pekerja** dan **Jumlah pekerja**.  
**G.4X**dan jenis **G.8X** pekerja hanya tersedia untuk pekerjaan Spark ETL AWS Glue versi 3.0 atau yang lebih baru di AWS Wilayah berikut: AS Timur (Ohio), AS Timur (Virginia N.), AS Barat (California N.), AS Barat (Oregon), Asia Pasifik (Mumbai), Asia Pasifik (Seoul), Asia Pasifik (Singapura), Asia Pasifik (Sydney), Asia Pasifik (Tokyo), Kanada (Tengah), Eropa (Frank Eropa (Irlandia), Eropa (London), Eropa (Spanyol), Eropa (Stockholm), dan Amerika Selatan (São Paulo).  
**G.12X**,**G.16X**, dan **R.1X** melalui jenis **R.8X** pekerja hanya tersedia untuk AWS Glue versi 4.0 atau yang lebih baru pekerjaan Spark ETL di AWS Wilayah berikut: AS Timur (Virginia N.), AS Barat (Oregon), AS Timur (Ohio), Eropa (Irlandia), dan Eropa (Frankfurt). Wilayah tambahan akan didukung dalam rilis future.

**Jumlah pekerja yang diminta**  
Untuk sebagian besar jenis pekerja, Anda harus menentukan jumlah pekerja yang dialokasikan saat pekerjaan berjalan. 

**Bookmark Tugas**  
Tentukan bagaimana AWS Glue memproses informasi status saat pekerjaan berjalan. Anda dapat membuatnya mengingat data yang diproses sebelumnya, memperbarui informasi status, atau mengabaikan informasi status. Untuk informasi selengkapnya, lihat [Melacak data yang diproses menggunakan bookmark pekerjaan](monitor-continuations.md).

**Job run antrian**  
Menentukan apakah pekerjaan berjalan antri untuk berjalan nanti ketika mereka tidak dapat berjalan segera karena kuota layanan.  
Saat diperiksa, antrian job run diaktifkan untuk menjalankan pekerjaan. Jika tidak dihuni, pekerjaan berjalan tidak akan dipertimbangkan untuk antrian.  
Jika setelan ini tidak cocok dengan nilai yang ditetapkan dalam job run, maka nilai dari bidang job run akan digunakan.

**Eksekusi fleksibel**  
Saat mengonfigurasi pekerjaan menggunakan AWS Studio atau API, Anda dapat menentukan kelas eksekusi pekerjaan standar atau fleksibel. Pekerjaan Anda mungkin memiliki berbagai tingkat prioritas dan sensitivitas waktu. Kelas eksekusi standar sangat ideal untuk beban kerja yang sensitif terhadap waktu yang membutuhkan startup pekerjaan cepat dan sumber daya khusus.  
Kelas eksekusi fleksibel cocok untuk pekerjaan yang tidak mendesak seperti pekerjaan pra-produksi, pengujian, dan pemuatan data satu kali. Jalankan pekerjaan yang fleksibel didukung untuk pekerjaan yang menggunakan AWS Glue versi 3.0 atau yang lebih baru dan `G.1X` atau jenis `G.2X` pekerja. Jenis pekerja baru (`G.12X`,`G.16X`, dan `R.1X` melalui`R.8X`) tidak mendukung eksekusi yang fleksibel.  

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/FnHCoTuDLXU/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/FnHCoTuDLXU)

Flex job run ditagih berdasarkan jumlah pekerja yang berjalan kapan saja. Jumlah pekerja dapat ditambahkan atau dihapus untuk menjalankan pekerjaan yang fleksibel. Alih-alih menagih sebagai perhitungan `Max Capacity` sederhana\$1`Execution Time`, setiap pekerja akan berkontribusi untuk waktu yang dijalankan selama pekerjaan dijalankan. Tagihan adalah jumlah dari (`Number of DPUs per worker`\$1`time each worker ran`).  
Untuk informasi selengkapnya, lihat panel bantuan di AWS Studio, atau [Lowongan](aws-glue-api-jobs-job.md) dan[Tugas berjalan](aws-glue-api-jobs-runs.md).

**Jumlah percobaan**  
Tentukan berapa kali, dari 0 hingga 10, yang AWS Glue akan secara otomatis memulai ulang pekerjaan jika gagal. Tugas yang mencapai batas habis waktu tidak dimulai ulang.

**Tugas habis waktu**  
Atur waktu eksekusi maksimal dalam satuan menit. Maksimal 7 hari atau 10.080 menit. Jika tidak, pekerjaan akan memberikan pengecualian.  
Ketika nilai dibiarkan kosong, batas waktu default menjadi 2880 menit.  
Setiap AWS Glue pekerjaan yang ada yang memiliki nilai batas waktu lebih dari 7 hari akan default menjadi 7 hari. Misalnya jika Anda menentukan batas waktu 20 hari untuk pekerjaan batch, itu akan dihentikan pada hari ke-7.  
**Praktik terbaik untuk batas waktu kerja**  
Pekerjaan ditagih berdasarkan waktu eksekusi. Untuk menghindari tagihan yang tidak terduga, konfigurasikan nilai batas waktu yang sesuai untuk waktu eksekusi yang diharapkan dari pekerjaan Anda. 

**Properti Lanjutan**    
**Nama file skrip**  
Nama skrip unik untuk pekerjaan Anda. Tidak dapat diberi nama Pekerjaan **Tanpa Judul**.  
**Jalur skrip**  
Lokasi skrip Amazon S3. Jalannya harus dalam bentuk`s3://bucket/prefix/path/`. Itu harus diakhiri dengan garis miring (`/`) dan tidak menyertakan file apa pun.  
**Metrik Tugas**  
Aktifkan atau matikan pembuatan CloudWatch metrik Amazon saat pekerjaan ini berjalan. Untuk melihat data pemrofilan, Anda harus mengaktifkan opsi ini. Untuk informasi selengkapnya tentang cara mengaktifkan dan memvisualisasikan metrik, lihat [Pemantauan dan debugging Job](monitor-profile-glue-job-cloudwatch-metrics.md).   
**Metrik observabilitas pekerjaan**  
Aktifkan pembuatan CloudWatch metrik observabilitas tambahan saat pekerjaan ini berjalan. Untuk informasi selengkapnya, lihat [Pemantauan dengan metrik AWS Glue Observabilitas](monitor-observability.md).  
**Pencatatan log berkelanjutan**  
Aktifkan pencatatan terus menerus ke Amazon CloudWatch. Jika opsi ini tidak diaktifkan, maka log hanya tersedia setelah tugas selesai saja. Untuk informasi selengkapnya, lihat [Logging untuk AWS Glue pekerjaan](monitor-continuous-logging.md).  
**Spark UI**  
Hidupkan penggunaan Spark UI untuk memantau tugas ini. Untuk informasi selengkapnya, lihat [Mengaktifkan UI web Apache Spark untuk pekerjaan AWS Glue](monitor-spark-ui-jobs.md).   
**Jalur log UI Spark**  
Jalur untuk menulis log saat Spark UI diaktifkan.  
**Konfigurasi logging dan pemantauan Spark UI**  
Pilih salah satu opsi berikut:  
+ *Standar*: tulis log menggunakan ID AWS Glue job run sebagai nama file. Aktifkan pemantauan UI Spark di AWS Glue konsol.
+ *Legacy*: tulis log menggunakan 'spark-application- \$1timestamp\$1 'sebagai nama file. Jangan nyalakan pemantauan UI Spark.
+ *Standar dan warisan*: tulis log ke lokasi standar dan lama. Aktifkan pemantauan UI Spark di AWS Glue konsol.  
**Konkurensi maksimum**  
Mengatur jumlah maksimal eksekusi bersamaan yang diperbolehkan untuk tugas ini. Default-nya adalah 1. Kesalahan dikembalikan ketika ambang batas ini tercapai. Nilai maksimal yang dapat Anda tentukan dikendalikan oleh kuota layanan. Sebagai contoh, jika eksekusi tugas sebelumnya masih berjalan ketika sebuah instans baru dimulai, maka Anda mungkin ingin mengembalikan kesalahan untuk mencegah dua instans dari tugas yang sama agar tidak berjalan secara bersamaan.   
**Jalur sementara**  
Berikan lokasi direktori kerja di Amazon S3 di mana hasil perantara sementara ditulis saat AWS Glue menjalankan skrip. Konfirmasi bahwa tidak ada file dengan nama yang sama sebagai direktori sementara pada path. Direktori ini digunakan saat AWS Glue membaca dan menulis ke Amazon Redshift dan oleh transformasi tertentu AWS Glue .  
AWS Glue membuat ember sementara untuk pekerjaan jika ember belum ada di suatu wilayah. Bucket ini mungkin mengizinkan akses publik. Anda dapat memodifikasi bucket di Amazon S3 untuk mengatur blok akses publik, atau menghapus bucket nanti setelah semua tugas di wilayah tersebut telah selesai.  
**Ambang batas pemberitahuan tunda (menit)**  
Menetapkan ambang batas (dalam menit) sebelum sebuah notifikasi penundaan dikirim. Anda dapat mengatur ambang batas ini untuk mengirim notifikasi ketika eksekusi tugas `RUNNING`, `STARTING`, atau `STOPPING` memerlukan waktu lebih dari jumlah menit yang diharapkan.  
**Konfigurasi keamanan**  
Pilih sebuah konfigurasi keamanan dari daftar. Sebuah konfigurasi keamanan menentukan bagaimana data pada target Amazon S3 dienkripsi: tidak ada enkripsi, enkripsi sisi server dengan kunci terkelola AWS KMS(SSE-KMS), atau kunci enkripsi yang dikelola Amazon S3 (SSE-S3).  
**enkripsi di sisi server**  
Jika Anda memilih opsi ini, maka ketika tugas ETL menulis ke Amazon S3, data dienkripsi secara at rest dengan menggunakan enkripsi SSE-S3. Baik target data Amazon S3 Anda dan data yang ditulis ke direktori sementara Amazon S3 , keduanya dienkripsi. Opsi ini diberikan sebagai parameter tugas. *Untuk informasi selengkapnya, lihat [Melindungi Data Menggunakan Enkripsi Sisi Server dengan Kunci Enkripsi Terkelola Amazon S3 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.*  
Opsi ini diabaikan jika sebuah konfigurasi keamanan ditentukan.  
**Gunakan katalog data Glue sebagai metastore Hive**  
Pilih untuk menggunakan Katalog AWS Glue Data sebagai metastore Hive. IAM role yang digunakan untuk tugas harus memiliki izin `glue:CreateDatabase`. Sebuah basis data dengan nama “default” dibuat dalam Katalog Data jika tidak ada.

**Koneksi**  
Pilih konfigurasi VPC untuk mengakses sumber data Amazon S3 yang terletak di cloud pribadi virtual (VPC) Anda. Anda dapat membuat dan mengelola koneksi Jaringan di AWS Glue. Untuk informasi selengkapnya, lihat [Menghubungkan ke data](glue-connections.md). 

**Perpustakaan**    
**Jalur pustaka Python, Jalur Dependen, dan JARs jalur file yang direferensikan**  
Tentukan opsi ini jika skrip Anda memerlukannya. Anda dapat menentukan path Amazon S3 yang dipisahkan koma untuk pilihan ini ketika Anda menentukan tugas. Anda dapat mengganti path ini ketika Anda menjalankan tugas. Untuk informasi selengkapnya, lihat [Menyediakan skrip kustom Anda sendiri](console-custom-created.md).  
**Parameter Tugas**  
Satu set pasangan nilai-kunci yang diberikan sebagai parameter bernama untuk skrip. Ini adalah nilai default yang digunakan ketika skrip dijalankan, tetapi Anda dapat menimpanya di pemicu atau ketika Anda menjalankan tugas. Anda harus memberikan prefiks pada nama kunci dengan `--`; misalnya: `--myKey`. Anda meneruskan parameter pekerjaan sebagai peta saat menggunakan AWS Command Line Interface.  
Sebagai contoh, lihat parameter Python di [Melewati dan mengakses parameter Python di AWS Glue](aws-glue-programming-python-calling.md#aws-glue-programming-python-calling-parameters).  
**Tag**  
Tandai tugas Anda dengan **Kunci tag** dan opsional **Nilai tag**. Setelah kunci tag dibuat, mereka hanya bisa dibaca. Gunakan tag ke sumber daya Anda untuk membantu mengatur dan mengidentifikasi sumber daya tersebut. Untuk informasi selengkapnya, lihat [AWS tag di AWS Glue](monitor-tags.md). 

## Pembatasan untuk pekerjaan yang mengakses tabel terkelola Lake Formation
<a name="lf-table-restrictions"></a>

Ingatlah catatan dan batasan berikut saat membuat pekerjaan yang membaca dari atau menulis ke tabel yang dikelola oleh AWS Lake Formation: 
+ Fitur berikut tidak didukung dalam pekerjaan yang mengakses tabel dengan filter tingkat sel:
  + [Bookmark Job](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html) dan eksekusi [terbatas](https://docs.aws.amazon.com/glue/latest/dg/bounded-execution.html)
  + [Predikat push-down](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-pushdowns)
  + [Predikat partisi katalog sisi server](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-cat-predicates)
  + [enableUpdateCatalog](https://docs.aws.amazon.com/glue/latest/dg/update-from-job.html)

# Mengedit skrip Spark di konsol AWS Glue
<a name="edit-script-spark"></a>

Skrip berisi kode yang mengekstrak data dari sumber, mengubahnya, dan memuatnya menjadi target. AWS Glue menjalankan skrip ketika memulai pekerjaan.

Skrip ETL AWS Glue dapat dikodekan dengan Python atau Scala. Skrip Python menggunakan bahasa yang merupakan perpanjangan dari dialek PySpark Python untuk mengekstrak, mengubah, dan memuat (ETL) pekerjaan. Skrip berisi *konstruksi diperpanjang* untuk menangani transformasi ETL. Ketika Anda secara otomatis membuat logika kode sumber untuk tugas Anda, sebuah skrip dibuat. Anda dapat mengedit skrip ini, atau Anda dapat memberikan skrip Anda sendiri untuk memproses tugas ETL Anda.

 Untuk informasi tentang mendefinisikan dan mengedit skripAWS Glue, lihat. [AWS Glue panduan pemrograman](edit-script.md)

## Pustaka atau file tambahan
<a name="w2aac37c11c12c13b9"></a>

Jika skrip Anda memerlukan perpustakaan atau file tambahan, Anda dapat menentukannya sebagai berikut:

**Path perpustakaan Python**  
Path Amazon Simple Storage Service (Amazon S3) yang dipisahkan koma ke perpustakaan Python yang diperlukan oleh skrip.  
Hanya perpustakaan Python murni yang dapat digunakan. Perpustakaan yang mengandalkan ekstensi C, seperti Perpustakaan Analisis Data Python, yakni pandas, saat ini tidak didukung.

**Path jar dependen**  
Path Amazon S3 yang dipisahkan koma untuk file JAR yang diperlukan oleh skrip.  
Saat ini, hanya perpustakaan murni Java atau Scala (2.11) yang dapat digunakan.

**Path file yang direferensikan**  
Path Amazon S3 yang dipisahkan koma untuk file tambahan (misalnya, file konfigurasi) yang diperlukan oleh skrip.

# Pekerjaan (warisan)
<a name="console-edit-script"></a>

Sebuah skrip berisi kode yang melakukan tugas extract, transform, and load (ETL). Anda dapat memberikan skrip Anda sendiri, atau AWS Glue dapat membuat skrip dengan bimbingan dari Anda. Untuk informasi selengkapnya mengenai cara membuat skrip Anda sendiri, lihat [Menyediakan skrip kustom Anda sendiri](console-custom-created.md).

Anda dapat mengedit skrip di konsol AWS Glue. Saat mengedit sebuah skrip, Anda dapat menambahkan sumber, target, dan transformasi.

**Untuk mengedit sebuah skrip**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). Lalu pilih tab **Tugas**.

1. Pilih tugas dalam daftar, lalu pilih **Tindakan**, **Edit skrip** untuk membuka editor skrip.

   Anda juga dapat mengakses editor skrip dari halaman detail tugas. Pilih tab **Skrip**, lalu pilih **Edit skrip**.

   

## Editor skrip
<a name="console-edit-script-editor"></a>

Editor skrip AWS Glue memungkinkan Anda memasukkan, memodifikasi, dan menghapus sumber, target, dan transformasi dalam skrip Anda. Editor skrip menampilkan skrip dan diagram untuk membantu Anda memvisualisasikan aliran data.

Untuk membuat diagram untuk skrip tersebut, pilih **Buat diagram**. AWS Glue menggunakan baris anotasi dalam skrip yang diawali dengan **\$1\$1** untuk membuat diagram. Untuk merepresentasikan skrip Anda dengan benar dalam diagram, Anda harus menyimpan parameter dalam anotasi dan parameter dalam kode Apache Spark secara sinkron.

Editor skrip memungkinkan Anda menambahkan templat kode di mana pun kursor Anda diposisikan dalam skrip. Di bagian atas editor, pilih dari opsi berikut:
+ Untuk menambahkan tabel sumber ke skrip, pilih **Sumber**.
+ Untuk menambahkan tabel target ke skrip, pilih **Target**.
+ Untuk menambahkan lokasi target ke skrip, pilih **Lokasi target**.
+ Untuk menambahkan transformasi ke skrip, pilih **Transformasi**. Untuk informasi tentang fungsi yang dipanggil dalam skrip Anda, lihat [Program skrip AWS Glue ETL di PySpark](aws-glue-programming-python.md).
+ Untuk menambahkan transformasi Spigot ke skrip, pilih **Spigot**.

Dalam kode yang dimasukkan, ubah `parameters` yang ada di anotasi dan kode Apache Spark. Sebagai contoh, jika Anda menambahkan transformasi **Spigot**, maka Anda harus memverifikasi bahwa `path` sudah diganti, baik di baris anotasi `@args` dan baris kode `output`.

Tab **Log** menunjukkan log yang dikaitkan dengan tugas Anda saat ia berjalan. 1.000 baris terbaru ditampilkan.

Tab **Skema** menunjukkan skema sumber dan target yang dipilih, bila ada dalam Katalog Data. 

# Melacak data yang diproses menggunakan bookmark pekerjaan
<a name="monitor-continuations"></a>

AWS Glue melacak data yang telah diproses selama eksekusi tugas ETL sebelumnya dengan mempertahankan informasi status dari eksekusi tugas. Informasi status yang dipertahankan ini disebut *bookmark tugas*. Bookmark tugas membantu AWS Glue mempertahankan informasi status dan mencegah pengolahan ulang data lama. Dengan bookmark tugas, Anda dapat memproses data baru saat menjalankan ulang berdasarkan pada interval yang dijadwalkan. Sebuah bookmark tugas terdiri dari status untuk berbagai elemen tugas, seperti sumber, transformasi, dan target. Misalnya, tugas ETL Anda mungkin membaca partisi baru dalam file Amazon S3. AWS Glue melacak partisi mana yang telah berhasil diproses oleh tugas untuk mencegah pemrosesan duplikat dan data duplikat di penyimpanan data target tugas.

Bookmark tugas diimplementasikan untuk sumber data JDBC, transformasi Relationalize, dan beberapa sumber Amazon Simple Storage Service (Amazon S3). Tabel berikut mencantumkan format sumber Amazon S3 yang didukung AWS Glue untuk bookmark tugas.


| Versi AWS Glue | Format sumber Amazon S3 | 
| --- | --- | 
| Versi 0.9 | JSON, CSV, Apache Avro, XML | 
| Versi 1.0 dan yang lebih baru | JSON, CSV, Apache Avro, XML, Parquet, ORC | 

Untuk informasi tentang versi AWS Glue, lihat [Mendefinisikan properti pekerjaan untuk pekerjaan Spark](add-job.md#create-job).

Fitur bookmark pekerjaan memiliki fungsi tambahan saat diakses melalui AWS Glue skrip. Saat menelusuri skrip yang Anda buat, Anda mungkin melihat konteks transformasi, yang terkait dengan fitur ini. Untuk informasi selengkapnya, lihat [Menggunakan bookmark pekerjaan](programming-etl-connect-bookmarks.md).

**Topics**
+ [Menggunakan bookmark pekerjaan di AWS Glue](#monitor-continuations-implement)
+ [Rincian operasional fitur bookmark pekerjaan](#monitor-continuations-script)

## Menggunakan bookmark pekerjaan di AWS Glue
<a name="monitor-continuations-implement"></a>

Opsi bookmark tugas diberikan sebagai parameter ketika tugas dimulai. Tabel berikut menjelaskan opsi untuk pengaturan bookmark tugas pada konsol AWS Glue.


****  

| Bookmark tugas | Deskripsi | 
| --- | --- | 
| Aktifkan | Menyebabkan tugas memperbarui status setelah eksekusi untuk melacak data yang sebelumnya telah diproses. Jika tugas Anda memiliki sumber dengan support bookmark tugas, maka tugas akan melacak data yang diproses, dan ketika tugas berjalan, ia memproses data baru sejak pos pemeriksaan terakhir. | 
| Nonaktifkan  | Bookmark tugas tidak digunakan, dan tugas selalu memproses seluruh set data. Anda bertanggung jawab untuk mengelola output dari eksekusi tugas sebelumnya. Ini adalah opsi default. | 
| Jeda |  Memproses data tambahan sejak eksekusi terakhir yang berhasil atau data dalam kisaran yang diidentifikasi oleh sub-opsi berikutnya, tanpa memperbarui status bookmark terakhir. Anda bertanggung jawab untuk mengelola output dari eksekusi tugas sebelumnya. Dua sub-opsi-nya adalah: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitor-continuations.html) Status bookmark tugas tidak diperbarui ketika rangkaian opsi ini ditentukan. Sub-opsi bersifat opsional, namun ketika digunakan, kedua sub-opsi tersebut perlu disediakan.  | 

Untuk detail tentang parameter yang diberikan ke sebuah tugas pada baris perintah, dan secara khusus untuk bookmark tugas, lihat [Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue](aws-glue-programming-etl-glue-arguments.md).

Untuk sumber input Amazon S3, bookmark tugas AWS Glue memeriksa waktu modifikasi terakhir atas objek untuk memverifikasi objek mana yang perlu diproses ulang. Jika data sumber masukan Anda telah dimodifkasi sejak eksekusi tugas terakhir Anda, maka file akan diproses kembali ketika Anda menjalankan tugas itu lagi.

Untuk sumber JDBC, aturan-aturan berikut berlaku:
+ Untuk setiap tabel, AWS Glue menggunakan satu atau beberapa kolom sebagai kunci bookmark untuk menentukan data baru dan data yang telah diproses. Kunci bookmark bergabung untuk membentuk satu kunci gabungan tunggal.
+ AWS Gluesecara default menggunakan kunci primer sebagai kunci bookmark, asalkan secara berurutan meningkat atau menurun (tanpa celah).
+ Anda dapat menentukan kolom yang akan digunakan sebagai tombol bookmark dalam AWS Glue skrip Anda. Untuk informasi selengkapnya tentang menggunakan bookmark Job dalam AWS Glue skrip, lihat. [Menggunakan bookmark pekerjaan](programming-etl-connect-bookmarks.md)
+ AWS Gluetidak mendukung penggunaan kolom dengan nama peka huruf besar/kecil sebagai kunci bookmark pekerjaan.

Anda dapat memundurkan bookmark tugas Anda untuk tugas ETL Spark AWS Glue Anda untuk setiap eksekusi tugas sebelumnya. Anda dapat men-support skenario pengumpulan data historis dengan lebih baik dengan memundurkan bookmark tugas Anda ke setiap eksekusi tugas sebelumnya, sehingga eksekusi tugas berikutnya hanya mengolah ulang data dari eksekusi tugas yang diberi bookmark.

Jika Anda berniat untuk memproses ulang semua data menggunakan tugas yang sama, setel ulang bookmark tugas. Untuk menyetel ulang status bookmark tugas, gunakan konsol AWS Glue, operasi API [ResetJobBookmark tindakan (Python: reset\$1job\$1bookmark)](aws-glue-api-jobs-runs.md#aws-glue-api-jobs-runs-ResetJobBookmark), atau AWS CLI. Sebagai contoh, masukkan perintah berikut menggunakan AWS CLI:

```
    aws glue reset-job-bookmark --job-name my-job-name
```

Saat Anda memundurkan atau mengatur ulang bookmark, AWS Glue tidak membersihkan file target karena mungkin ada beberapa target dan target tidak dilacak dengan bookmark tugas. Hanya file sumber yang dilacak dengan bookmark tugas. Anda dapat membuat target output yang berbeda ketika memundurkan dan mengolah ulang file sumber untuk menghindari duplikat data dalam output Anda.

AWS Glue melacak bookmark tugas berdasarkan tugas. Jika Anda menghapus sebuah tugas, maka bookmark tugas akan dihapus.

Dalam beberapa kasus, Anda mungkin telah mengaktifkan bookmark tugas ETL AWS Glue tapi tugas ETL Anda mengolah ulang data yang sudah diproses dalam eksekusi sebelumnya. Untuk informasi selengkapnya tentang mengatasi penyebab umum kesalahan ini, lihat [Pemecahan masalah Glue kesalahan pengaturan umum](glue-troubleshooting-errors.md).

## Rincian operasional fitur bookmark pekerjaan
<a name="monitor-continuations-script"></a>

Bagian ini menjelaskan lebih lanjut tentang detail operasional penggunaan bookmark tugas.

Bookmark tugas menyimpan status untuk sebuah tugas. Setiap instans dari status tersebut di beri kunci berdasarkan nama tugas dan nomor versi. Ketika sebuah skrip memanggil `job.init`, maka ia mengambil status dan selalu mendapatkan versi terbaru. Dalam sebuah status, ada beberapa elemen status, yang spesifik untuk setiap sumber, transformasi, dan instans sink dalam skrip tersebut. Unsur-unsur status diidentifikasi oleh konteks transformasi yang dilampirkan pada elemen yang sesuai (sumber, transformasi, atau sink) dalam skrip. Unsur-unsur status disimpan secara atom saat `job.commit` dipanggil dari skrip pengguna. Skrip mendapat nama tugas dan pilihan kontrol untuk bookmark tugas dari argumen.

Unsur-unsur status dalam bookmark tugas adalah sumber, transformasi, atau data spesifik-sink. Sebagai contoh, misalkan Anda ingin membaca data tambahan dari lokasi Amazon S3 yang terus ditulis oleh tugas atau proses hulu. Dalam hal ini, skrip harus menentukan apa yang telah diproses sejauh ini. Implementasi bookmark tugas untuk sumber Amazon S3 menyimpan informasi sehingga ketika tugas berjalan lagi, ia dapat mem-filter hanya objek baru saja menggunakan informasi tersimpan dan melakukan komputasi ulang atas status untuk eksekusi tugas berikutnya. Sebuah stempel waktu digunakan untuk mem-filter file baru.

Selain elemen status, bookmark tugas memiliki *nomor eksekusi*, sebuah *nomor percobaan*, dan *nomor versi*. Nomor eksekusi melacak eksekusi tugas, dan nomor percobaan mencatat percobaan yang dilakukan untuk eksekusi tugas. Nomor eksekusi tugas adalah nomor yang meningkat secara monoton yang bertambah untuk setiap eksekusi yang berhasil. Nomor percobaan melacak upaya untuk setiap eksekusi, dan hanya bertambah ketika ada eksekusi setelah ada percobaan yang gagal. Nomor versi meningkat secara monoton dan melacak pembaruan ke bookmark tugas.

Dalam database AWS Glue layanan, status bookmark untuk semua transformasi disimpan bersama sebagai pasangan nilai kunci:

```
{
  "job_name" : ...,
  "run_id": ...,
  "run_number": ..,
  "attempt_number": ...
  "states": {
    "transformation_ctx1" : {
      bookmark_state1
    },
    "transformation_ctx2" : {
      bookmark_state2
    }
  }
}
```

**Praktik terbaik**  
Berikut ini adalah praktik terbaik untuk menggunakan bookmark pekerjaan.
+ *Jangan mengubah properti sumber data dengan bookmark diaktifkan*. Misalnya, ada sumber data0 yang menunjuk ke jalur input Amazon S3 A, dan pekerjaan telah membaca dari sumber yang telah berjalan selama beberapa putaran dengan bookmark diaktifkan. Jika Anda mengubah jalur input datasource0 ke Amazon S3 path B tanpa mengubah`transformation_ctx`, AWS Glue pekerjaan akan menggunakan status bookmark lama yang disimpan. Itu akan mengakibatkan file hilang atau melewatkan di jalur input B seperti yang AWS Glue akan mengasumsikan bahwa file-file tersebut telah diproses dalam proses sebelumnya. 
+ *Gunakan tabel katalog dengan bookmark untuk manajemen partisi yang lebih baik*. Bookmark berfungsi baik untuk sumber data dari Katalog Data atau dari opsi. Namun, sulit untuk partisi remove/add baru dengan pendekatan opsi from. [Menggunakan tabel katalog dengan crawler dapat memberikan otomatisasi yang lebih baik untuk melacak [partisi](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html#tables-partition) yang baru ditambahkan dan memberi Anda fleksibilitas untuk memilih partisi tertentu dengan predikat pushdown.](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html)
+ *Gunakan [lister file AWS Glue Amazon S3](https://aws.amazon.com/premiumsupport/knowledge-center/glue-oom-java-heap-space-error/) untuk* kumpulan data besar. Bookmark akan mencantumkan semua file di bawah setiap partisi input dan melakukan filering, jadi jika ada terlalu banyak file di bawah satu partisi bookmark dapat berjalan ke driver OOM. Gunakan lister file AWS Glue Amazon S3 untuk menghindari daftar semua file dalam memori sekaligus.

# Menyimpan data shuffle Spark
<a name="monitor-spark-shuffle-manager"></a>

Shuffling adalah langkah penting dalam pekerjaan Spark setiap kali data disusun ulang di antara partisi. Hal ini diperlukan karena transformasi yang luas seperti`join`,, ` groupByKey``reduceByKey`, dan `repartition` memerlukan informasi dari partisi lain untuk menyelesaikan pemrosesan. Spark mengumpulkan data yang diperlukan dari setiap partisi dan menggabungkannya menjadi partisi baru. Selama shuffle, data ditulis ke disk dan ditransfer ke seluruh jaringan. Akibatnya, operasi shuffle terikat pada kapasitas disk lokal. Spark melempar ` MetadataFetchFailedException` kesalahan `No space left on device` atau ketika tidak ada cukup ruang disk yang tersisa pada eksekutor dan tidak ada pemulihan.

**catatan**  
 AWS Glue Plugin Spark shuffle dengan Amazon S3 hanya didukung AWS Glue untuk pekerjaan ETL. 

**Solusi**  
DenganAWS Glue, Anda sekarang dapat menggunakan Amazon S3 untuk menyimpan data shuffle Spark. Amazon S3 adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja terdepan di industri. Solusi ini memisahkan komputasi dan penyimpanan untuk pekerjaan Spark Anda, dan memberikan elastisitas lengkap dan penyimpanan shuffle berbiaya rendah, memungkinkan Anda menjalankan beban kerja paling intensif acak dengan andal.

![\[Spark workflow showing Map and Reduce stages using Amazon S3 for shuffle data storage.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/gs-s3-shuffle-diagram.png)


Kami memperkenalkan Plugin Penyimpanan Cloud Shuffle baru untuk Apache Spark untuk menggunakan Amazon S3. Anda dapat mengaktifkan pengocokan Amazon S3 untuk menjalankan AWS Glue pekerjaan dengan andal tanpa kegagalan jika diketahui terikat oleh kapasitas disk lokal untuk operasi pengocokan besar. Dalam beberapa kasus, pengocokan ke Amazon S3 sedikit lebih lambat daripada disk lokal (atau EBS) jika Anda memiliki sejumlah besar partisi kecil atau file acak yang ditulis ke Amazon S3.

## Prasyarat untuk menggunakan Plugin Cloud Shuffle Storage
<a name="monitor-spark-shuffle-manager-prereqs"></a>

 Untuk menggunakan Plugin Cloud Shuffle Storage dengan pekerjaan AWS Glue ETL, Anda memerlukan yang berikut ini: 
+ Bucket Amazon S3 yang terletak di wilayah yang sama dengan pekerjaan Anda, untuk menyimpan data acak dan tumpah perantara. Awalan penyimpanan shuffle Amazon S3 dapat ditentukan dengan`--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket/prefix/`, seperti pada contoh berikut:

  ```
  --conf spark.shuffle.glue.s3ShuffleBucket=s3://glue-shuffle-123456789-us-east-1/glue-shuffle-data/
  ```
+  Tetapkan kebijakan siklus hidup penyimpanan Amazon S3 pada *awalan* (seperti`glue-shuffle-data`) karena pengelola acak tidak membersihkan file setelah pekerjaan selesai. Data shuffle dan tumpah perantara harus dihapus setelah pekerjaan selesai. Pengguna dapat menetapkan kebijakan siklus hidup singkat pada awalan. Petunjuk untuk menyiapkan kebijakan siklus hidup Amazon S3 tersedia di [Menyetel konfigurasi siklus hidup pada bucket di Panduan Pengguna Layanan Penyimpanan Sederhana](https://docs.aws.amazon.com//AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html) Amazon.

## Menggunakan AWS Glue Spark shuffle manager dari konsol AWS
<a name="monitor-spark-shuffle-manager-using-console"></a>

Untuk menyiapkan pengelola acak AWS Glue Spark menggunakan AWS Glue konsol atau AWS Glue Studio saat mengonfigurasi pekerjaan: pilih parameter pekerjaan **-- write-shuffle-files-to -s3** untuk mengaktifkan pengocokan Amazon S3 untuk pekerjaan tersebut.

![\[Job parameters interface showing --write-shuffle-files- parameter and option to add more.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/gs-s3-shuffle.png)


## Menggunakan plugin AWS Glue Spark shuffle
<a name="monitor-spark-shuffle-manager-using"></a>

Parameter pekerjaan berikut menyala dan menyetel manajer AWS Glue acak. Parameter ini adalah bendera, jadi nilai apa pun yang diberikan tidak dipertimbangkan.
+ `--write-shuffle-files-to-s3`— Bendera utama, yang memungkinkan manajer shuffle AWS Glue Spark menggunakan bucket Amazon S3 untuk menulis dan membaca data shuffle. Ketika bendera tidak ditentukan, manajer acak tidak digunakan.
+ `--write-shuffle-spills-to-s3`— (Didukung hanya pada AWS Glue versi 2.0). Bendera opsional yang memungkinkan Anda membongkar file tumpahan ke bucket Amazon S3, yang memberikan ketahanan tambahan pada pekerjaan Spark Anda. Ini hanya diperlukan untuk beban kerja besar yang menumpahkan banyak data ke disk. Ketika bendera tidak ditentukan, tidak ada file tumpahan perantara yang ditulis.
+ ` --conf spark.shuffle.glue.s3ShuffleBucket=s3://<shuffle-bucket>`— Bendera opsional lain yang menentukan bucket Amazon S3 tempat Anda menulis file shuffle. Secara default, `--TempDir` /shuffle-data. AWS Glue 3.0\$1 mendukung penulisan file shuffle ke beberapa bucket dengan menentukan bucket dengan pembatas koma, seperti pada. `--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket-1/prefix,s3://shuffle-bucket-2/prefix/` Menggunakan beberapa ember meningkatkan kinerja. 

Anda perlu menyediakan pengaturan konfigurasi keamanan untuk mengaktifkan enkripsi saat istirahat untuk data acak. Untuk informasi selengkapnya tentang konfigurasi keamanan, lihat[Menyiapkan enkripsi di AWS Glue](set-up-encryption.md). AWS Gluemendukung semua konfigurasi terkait shuffle lainnya yang disediakan oleh Spark.

**Binari perangkat lunak untuk plugin Cloud Shuffle Storage**  
Anda juga dapat mengunduh binari perangkat lunak Cloud Shuffle Storage Plugin untuk Apache Spark di bawah lisensi Apache 2.0 dan menjalankannya di lingkungan Spark apa pun. Plugin baru ini dilengkapi dengan dukungan out-of-the kotak untuk Amazon S3, dan juga dapat dengan mudah dikonfigurasi untuk menggunakan bentuk penyimpanan cloud lainnya seperti [Google Cloud Storage dan Microsoft Azure Blob](https://github.com/aws-samples/aws-glue-samples/blob/master/docs/cloud-shuffle-plugin/README.md) Storage. Untuk informasi selengkapnya, lihat [Plugin Cloud Shuffle Storage untuk Apache](https://docs.aws.amazon.com/glue/latest/dg/cloud-shuffle-storage-plugin.html) Spark.

**Catatan dan batasan**  
Berikut ini adalah catatan atau batasan untuk manajer AWS Glue acak:
+  AWS Glue pengelola acak tidak secara otomatis menghapus file data acak (sementara) yang disimpan di bucket Amazon S3 Anda setelah pekerjaan selesai. Untuk memastikan perlindungan data, ikuti petunjuk [Prasyarat untuk menggunakan Plugin Cloud Shuffle Storage](#monitor-spark-shuffle-manager-prereqs) sebelum mengaktifkan Plugin Cloud Shuffle Storage. 
+ Anda dapat menggunakan fitur ini jika data Anda miring.

# Plugin Penyimpanan Cloud Shuffle untuk Apache Spark
<a name="cloud-shuffle-storage-plugin"></a>

Plugin Cloud Shuffle Storage adalah plugin Apache Spark yang kompatibel dengan [`ShuffleDataIO`API](https://github.com/apache/spark/blob/master/core/src/main/java/org/apache/spark/shuffle/api/ShuffleDataIO.java) yang memungkinkan penyimpanan data shuffle pada sistem penyimpanan cloud (seperti Amazon S3). Ini membantu Anda untuk menambah atau mengganti kapasitas penyimpanan disk lokal untuk operasi shuffle besar, biasanya dipicu oleh transformasi seperti`join`,`reduceByKey`, `groupByKey` dan `repartition` dalam aplikasi Spark Anda, sehingga mengurangi kegagalan umum atau price/performance dislokasi pekerjaan analitik data tanpa server Anda dan pipeline.

**AWS Glue**  
AWS Glueversi 3.0 dan 4.0 dilengkapi dengan plugin yang sudah diinstal sebelumnya dan siap untuk mengaktifkan pengocokan ke Amazon S3 tanpa langkah tambahan. Untuk informasi selengkapnya, lihat [Plugin AWS Glue Spark shuffle dengan Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-shuffle-manager.html) untuk mengaktifkan fitur untuk aplikasi Spark Anda.

**Lingkungan Spark lainnya**  
Plugin ini memerlukan konfigurasi Spark berikut untuk disetel di lingkungan Spark lainnya:
+ `--conf spark.shuffle.sort.io.plugin.class=com.amazonaws.spark.shuffle.io.cloud.ChopperPlugin`: Ini menginformasikan Spark untuk menggunakan plugin ini untuk Shuffle IO.
+ `--conf spark.shuffle.storage.path=s3://bucket-name/shuffle-file-dir`: Jalur tempat file shuffle Anda akan disimpan.

**catatan**  
Plugin menimpa satu kelas inti Spark. Akibatnya, toples plugin perlu dimuat sebelum stoples Spark. Anda dapat melakukan ini menggunakan `userClassPathFirst` di lingkungan YARN on-prem jika plugin digunakan di luar. AWS Glue

## Bundling plugin dengan aplikasi Spark Anda
<a name="cloud-shuffle-storage-plugin-bundling"></a>

Anda dapat menggabungkan plugin dengan aplikasi Spark dan distribusi Spark Anda (versi 3.1 ke atas) dengan menambahkan ketergantungan plugin di Maven Anda `pom.xml` sambil mengembangkan aplikasi Spark Anda secara lokal. Untuk informasi lebih lanjut tentang plugin dan versi Spark, lihat[Versi plugin](#cloud-shuffle-storage-plugin-versions).

```
<repositories>
   ...
    <repository>
        <id>aws-glue-etl-artifacts</id>
        <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/ </url>
    </repository>
</repositories>
...
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>chopper-plugin</artifactId>
    <version>3.1-amzn-LATEST</version>
</dependency>
```

Anda dapat mengunduh binari dari artefak AWS Glue Maven secara langsung dan memasukkannya ke dalam aplikasi Spark Anda sebagai berikut.

```
#!/bin/bash
sudo wget -v https://aws-glue-etl-artifacts.s3.amazonaws.com/release/com/amazonaws/chopper-plugin/3.1-amzn-LATEST/chopper-plugin-3.1-amzn-LATEST.jar -P /usr/lib/spark/jars/
```

Contoh spark-submit

```
spark-submit --deploy-mode cluster \
--conf spark.shuffle.storage.s3.path=s3://<ShuffleBucket>/<shuffle-dir> \
--conf spark.driver.extraClassPath=<Path to plugin jar> \ 
--conf spark.executor.extraClassPath=<Path to plugin jar> \
--class <your test class name> s3://<ShuffleBucket>/<Your application jar> \
```

## Konfigurasi opsional
<a name="cloud-shuffle-storage-plugin-optional"></a>

Ini adalah nilai konfigurasi opsional yang mengontrol perilaku shuffle Amazon S3. 
+ `spark.shuffle.storage.s3.enableServerSideEncryption`: Enable/disable S3 SSE untuk file acak dan tumpahan. Nilai default-nya adalah `true`.
+ `spark.shuffle.storage.s3.serverSideEncryption.algorithm`: Algoritma SSE yang akan digunakan. Nilai default-nya adalah `AES256`.
+ `spark.shuffle.storage.s3.serverSideEncryption.kms.key`: ARN kunci KMS saat SSE aws:kms diaktifkan.

Seiring dengan konfigurasi ini, Anda mungkin perlu mengatur konfigurasi seperti `spark.hadoop.fs.s3.enableServerSideEncryption` dan **konfigurasi khusus lingkungan lainnya untuk memastikan enkripsi yang sesuai diterapkan** untuk kasus penggunaan Anda.

## Versi plugin
<a name="cloud-shuffle-storage-plugin-versions"></a>

Plugin ini didukung untuk versi Spark yang terkait dengan setiap AWS Glue versi. Tabel berikut menunjukkan AWS Glue versi, versi Spark dan versi plugin terkait dengan lokasi Amazon S3 untuk biner perangkat lunak plugin.


| Versi AWS Glue | Versi Spark | Versi plugin | Lokasi Amazon S3 | 
| --- | --- | --- | --- | 
| 3.0 | 3.1 | 3.1-AMZN-Terbaru |  s3:///aws-glue-etl-artifacts-plugin-3.1-AMZN-terbaru.jar release/com/amazonaws/chopper-plugin/3.1-amzn-0/chopper  | 
| 4.0 | 3.3 | 3.3-AMZN-Terbaru |  s3:///aws-glue-etl-artifacts-plugin-3.3-AMZN-terbaru.jar release/com/amazonaws/chopper-plugin/3.3-amzn-0/chopper  | 

## Lisensi
<a name="cloud-shuffle-storage-plugin-binary-license"></a>

Biner perangkat lunak untuk plugin ini dilisensikan di bawah Lisensi Apache-2.0.

# Lowongan kerja Monitoring AWS Glue Spark
<a name="monitor-spark"></a>

**Topics**
+ [Metrik Spark tersedia di AWS Glue Studio](#console-jobs-details-metrics-spark)
+ [Memantau pekerjaan menggunakan UI web Apache Spark](monitor-spark-ui.md)
+ [Pemantauan dengan wawasan menjalankan AWS Glue pekerjaan](monitor-job-insights.md)
+ [Pemantauan CloudWatch dengan Amazon](monitor-cloudwatch.md)
+ [Pemantauan dan debugging Job](monitor-profile-glue-job-cloudwatch-metrics.md)

## Metrik Spark tersedia di AWS Glue Studio
<a name="console-jobs-details-metrics-spark"></a>

Tab **Metrik** menampilkan metrik yang dikumpulkan saat sebuah eksekusi tugas dan pembuatan profil diaktifkan. Grafik berikut ditunjukkan dalam pekerjaan Spark: 
+ Pergerakan Data ETL
+ Profil Memori: Driver dan Pelaksana

Pilih **Lihat metrik tambahan** untuk menampilkan grafik berikut:
+ Pergerakan Data ETL
+ Profil Memori: Driver dan Pelaksana
+ Data yang Diacak di Seluruh Pelaksana
+ Beban CPU: Driver dan Pelaksana
+ Eksekusi Tugas: Pelaksana Aktif, Tahapan Selesai & Pelaksana Maksimal yang Dibutuhkan

Data untuk grafik ini didorong ke CloudWatch metrik jika pekerjaan dikonfigurasi untuk mengumpulkan metrik. Untuk informasi selengkapnya tentang cara mengaktifkan metrik dan menafsirkan grafik, lihat [Pemantauan dan debugging Job](monitor-profile-glue-job-cloudwatch-metrics.md). 

**Example Grafik pergerakan data ETL**  
Grafik Pergerakan Data ETL menunjukkan metrik berikut:  
+ Jumlah byte yang dibaca dari Amazon S3 oleh semua pelaksana—[`glue.ALL.s3.filesystem.read_bytes`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes)
+ Jumlah byte yang ditulis ke Amazon S3 oleh semua pelaksana—[`glue.ALL.s3.filesystem.write_bytes`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes)

![\[Grafik untuk Pergerakan Data ETL di tab Metrik pada konsol AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/job_detailed_etl.png)


**Example Grafik profil memori**  
Grafik Profil Memori menampilkan metrik berikut ini:  
+ Fraksi memori yang digunakan oleh tumpukan JVM untuk driver ini (skala: 0–1) oleh driver, yakni pelaksana diidentifikasi oleh *executorId*, atau semua pelaksana—
  + [`glue.driver.jvm.heap.usage`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.jvm.heap.usage)
  + [`glue.executorId.jvm.heap.usage`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.jvm.heap.usage)
  + [`glue.ALL.jvm.heap.usage`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage)

![\[Grafik untuk Profil Memori di tab Metrik pada konsol AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/job_detailed_mem.png)


**Example Pengocokan data di seluruh grafik pelaksana**  
Grafik Data yang Diacak di Seluruh Pelaksana menunjukkan metrik berikut:  
+ Jumlah byte yang dibaca oleh semua pelaksana untuk mengacak data antara mereka—[`glue.driver.aggregate.shuffleLocalBytesRead`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleLocalBytesRead)
+ Jumlah byte yang ditulis oleh semua pelaksana untuk mengacak data antara mereka—[`glue.driver.aggregate.shuffleBytesWritten`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleBytesWritten)

![\[Grafik untuk Data yang Diacak di Seluruh Pelaksana di tab Metrik pada konsol AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/job_detailed_data.png)


**Example Grafik beban CPU**  
Grafik Beban CPU menunjukkan metrik berikut:  
+ Fraksi beban sistem CPU yang digunakan (skala: 0–1) oleh driver, yakni pelaksana yang diidentifikasi oleh *executorId*, atau semua pelaksana—
  + [`glue.driver.system.cpuSystemLoad`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.system.cpuSystemLoad)
  + [`glue.executorId.system.cpuSystemLoad`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.system.cpuSystemLoad)
  + [`glue.ALL.system.cpuSystemLoad`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.system.cpuSystemLoad)

![\[Grafik untuk Beban CPU di tab Metrik pada konsol AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/job_detailed_cpu.png)


**Example Grafik eksekusi Job**  
Grafik Eksekusi Tugas menampilkan metrik berikut:  
+ Jumlah pelaksana yang berjalan aktif—[`glue.driver.ExecutorAllocationManager.executors.numberAllExecutors`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberAllExecutors)
+ Jumlah tahap yang telah selesai—[`glue.aggregate.numCompletedStages`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.numCompletedStages)
+ Jumlah maksimal pelaksana yang dibutuhkan—[`glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors)

![\[Grafik untuk Eksekusi Tugas di tab Metrik pada konsol AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/job_detailed_exec.png)


# Memantau pekerjaan menggunakan UI web Apache Spark
<a name="monitor-spark-ui"></a>

Anda dapat menggunakan Apache Spark Web UI untuk memantau dan melakukan debug tugas ETL AWS Glue yang berjalan pada sistem tugas AWS Glue, dan juga aplikasi Spark yang berjalan di titik akhir pengembangan AWS Glue. Spark UI memungkinkan Anda untuk memeriksa hal berikut untuk setiap tugas:
+ Lini waktu peristiwa dari setiap tahap Spark
+ Grafik asiklik terarah (DAG) dari tugas tersebut
+ Rencana fisik dan logis untuk kueri SparkSQL
+ Variabel lingkungan Spark yang mendasari untuk setiap tugas

Untuk informasi selengkapnya tentang penggunaan UI Web Spark, lihat [UI Web](https://spark.apache.org/docs/3.3.0/web-ui.html) di dokumentasi Spark. Untuk panduan tentang cara menafsirkan hasil Spark UI guna meningkatkan kinerja pekerjaan Anda, lihat [Praktik terbaik untuk penyetelan AWS Glue kinerja untuk pekerjaan Apache Spark](https://docs.aws.amazon.com/prescriptive-guidance/latest/tuning-aws-glue-for-apache-spark/introduction.html) di Panduan Preskriptif. AWS 

 Anda dapat melihat UI Spark di AWS Glue konsol. Ini tersedia ketika AWS Glue pekerjaan berjalan pada versi AWS Glue 3.0 atau yang lebih baru dengan log yang dihasilkan dalam format Standar (bukan warisan), yang merupakan default untuk pekerjaan yang lebih baru. Jika Anda memiliki file log lebih besar dari 0,5 GB, Anda dapat mengaktifkan dukungan log bergulir untuk pekerjaan berjalan pada versi AWS Glue 4.0 atau yang lebih baru untuk menyederhanakan pengarsipan log, analisis, dan pemecahan masalah.

Anda dapat mengaktifkan UI Spark dengan menggunakan AWS Glue konsol atau AWS Command Line Interface (AWS CLI). Saat Anda mengaktifkan UI Spark, pekerjaan AWS Glue ETL, dan aplikasi Spark pada titik akhir AWS Glue pengembangan dapat mencadangkan log peristiwa Spark ke lokasi yang Anda tentukan di Amazon Simple Storage Service (Amazon S3). Anda dapat menggunakan log peristiwa yang dicadangkan di Amazon S3 dengan Spark UI, baik secara real time saat pekerjaan beroperasi dan setelah pekerjaan selesai. Meskipun log tetap ada di Amazon S3, UI Spark di AWS Glue konsol dapat melihatnya. 

## Izin
<a name="monitor-spark-ui-limitations-permissions"></a>

 Untuk menggunakan UI Spark di AWS Glue konsol, Anda dapat menggunakan `UseGlueStudio` atau menambahkan semua layanan APIs individual. Semua APIs diperlukan untuk menggunakan UI Spark sepenuhnya, namun pengguna dapat mengakses fitur SparkUI dengan menambahkan layanannya APIs di izin IAM mereka untuk akses berbutir halus. 

 `RequestLogParsing`adalah yang paling penting karena melakukan penguraian log. Sisanya APIs adalah untuk membaca data yang diuraikan masing-masing. Misalnya, `GetStages` menyediakan akses ke data tentang semua tahapan pekerjaan Spark. 

 Daftar layanan Spark UI yang APIs dipetakan `UseGlueStudio` berada di bawah ini dalam kebijakan sampel. Kebijakan di bawah ini menyediakan akses untuk hanya menggunakan fitur UI Spark. Untuk menambahkan lebih banyak izin seperti Amazon S3 dan IAM, [lihat Membuat Kebijakan IAM Kustom untuk](https://docs.aws.amazon.com/glue/latest/dg/getting-started-min-privs.html#getting-started-all-gs-privs.html). AWS Glue Studio

 Daftar layanan Spark UI yang APIs dipetakan `UseGlueStudio` ada di bawah ini dalam kebijakan sampel. Saat menggunakan API layanan Spark UI, gunakan namespace berikut:. `glue:<ServiceAPI>` 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGlueStudioSparkUI",
      "Effect": "Allow",
      "Action": [
        "glue:RequestLogParsing",
        "glue:GetLogParsingStatus",
        "glue:GetEnvironment",
        "glue:GetJobs",
        "glue:GetJob",
        "glue:GetStage",
        "glue:GetStages",
        "glue:GetStageFiles",
        "glue:BatchGetStageFiles",
        "glue:GetStageAttempt",
        "glue:GetStageAttemptTaskList",
        "glue:GetStageAttemptTaskSummary",
        "glue:GetExecutors",
        "glue:GetExecutorsThreads",
        "glue:GetStorage",
        "glue:GetStorageUnit",
        "glue:GetQueries",
        "glue:GetQuery"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## Batasan
<a name="monitor-spark-ui-limitations"></a>
+ Spark UI di AWS Glue konsol tidak tersedia untuk menjalankan pekerjaan yang terjadi sebelum 20 November 2023 karena berada dalam format log lama.
+  Spark UI di AWS Glue konsol mendukung rolling log untuk AWS Glue 4.0, seperti yang dihasilkan secara default dalam pekerjaan streaming. Jumlah maksimum dari semua file peristiwa log gulung yang dihasilkan adalah 2 GB. Untuk AWS Glue pekerjaan tanpa dukungan log yang digulung, ukuran file peristiwa log maksimum yang didukung untuk SparkUI adalah 0,5 GB. 
+  UI Spark Tanpa Server tidak tersedia untuk log peristiwa Spark yang disimpan di bucket Amazon S3 yang hanya dapat diakses oleh VPC Anda. 

## Contoh: Apache Spark web UI
<a name="monitor-spark-ui-limitations-example"></a>

Contoh ini menunjukkan cara menggunakan UI Spark untuk memahami kinerja pekerjaan Anda. Tangkapan layar menunjukkan UI web Spark seperti yang disediakan oleh server riwayat Spark yang dikelola sendiri. Spark UI di AWS Glue konsol memberikan tampilan serupa. Untuk informasi selengkapnya tentang penggunaan UI Web Spark, lihat [UI Web](https://spark.apache.org/docs/3.3.0/web-ui.html) di dokumentasi Spark.

Berikut ini adalah contoh aplikasi Spark yang membaca dari dua sumber data, melakukan transformasi gabungan, dan menuliskannya ke Amazon S3 dalam format Parket.

```
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql.functions import count, when, expr, col, sum, isnull
from pyspark.sql.functions import countDistinct
from awsglue.dynamicframe import DynamicFrame
 
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
 
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
 
job = Job(glueContext)
job.init(args['JOB_NAME'])
 
df_persons = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/persons.json")
df_memberships = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/memberships.json")
 
df_joined = df_persons.join(df_memberships, df_persons.id == df_memberships.person_id, 'fullouter')
df_joined.write.parquet("s3://aws-glue-demo-sparkui/output/")
 
job.commit()
```

Visualisasi DAG berikut menunjukkan tahapan yang berbeda dalam tugas Spark ini.

![\[Tangkapan layar dari Spark UI yang menunjukkan 2 tahap yang diselesaikan untuk tugas 0.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/spark-ui1.png)


Lini waktu peristiwa tugas berikut menunjukkan awal, eksekusi, dan pengakhiran pelaksana Spark yang berbeda.

![\[Tangkapan layar dari Spark UI yang menunjukkan tahap yang sudah selesai, gagal, dan aktif dari pelaksana Spark yang berbeda.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/spark-ui2.png)


Layar berikut menunjukkan detail dari rencana kueri SparkSQL:
+ Rencana logis diurai
+ Rencana logis yang dianalisis
+ Rencana logis yang dioptimalkan
+ Rencana fisik untuk eksekusi

![\[Rencana kueri SparkSQL: rencana logis dan rencana fisik yang diurai, dianalisis, dan dioptimalkan untuk eksekusi.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/spark-ui3.png)


**Topics**
+ [Izin](#monitor-spark-ui-limitations-permissions)
+ [Batasan](#monitor-spark-ui-limitations)
+ [Contoh: Apache Spark web UI](#monitor-spark-ui-limitations-example)
+ [Mengaktifkan UI web Apache Spark untuk pekerjaan AWS Glue](monitor-spark-ui-jobs.md)
+ [Meluncurkan server sejarah Spark](monitor-spark-ui-history.md)

# Mengaktifkan UI web Apache Spark untuk pekerjaan AWS Glue
<a name="monitor-spark-ui-jobs"></a>

Anda dapat menggunakan Apache Spark Web UI untuk memantau dan melakukan debug tugas ETL AWS Glue yang berjalan pada sistem tugas AWS Glue. Anda dapat mengkonfigurasi Spark UI dengan menggunakan konsol AWS Glue atau AWS Command Line Interface (AWS CLI).

Setiap 30 detik, AWS Glue buat cadangan log peristiwa Spark ke jalur Amazon S3 yang Anda tentukan.

**Topics**
+ [Mengkonfigurasi UI Spark (konsol)](#monitor-spark-ui-jobs-console)
+ [Mengkonfigurasi Spark UI (AWS CLI)](#monitor-spark-ui-jobs-cli)
+ [Mengonfigurasi UI Spark untuk sesi menggunakan Notebook](#monitor-spark-ui-sessions)
+ [Aktifkan log bergulir](#monitor-spark-ui-rolling-logs)

## Mengkonfigurasi UI Spark (konsol)
<a name="monitor-spark-ui-jobs-console"></a>

Ikuti langkah-langkah ini untuk mengonfigurasi UI Spark dengan menggunakan. Konsol Manajemen AWS Saat membuat AWS Glue pekerjaan, Spark UI diaktifkan secara default.

**Untuk mengaktifkan UI Spark saat Anda membuat atau mengedit pekerjaan**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Tugas**.

1. Pilih **Tambah pekerjaan**, atau pilih yang sudah ada.

1. Di **detail Job**, buka **properti Advanced**.

1. Di bawah tab **Spark UI**, pilih **Tulis log UI Spark ke Amazon S3**.

1. Tentukan path Amazon S3 untuk menyimpan log peristiwa Spark untuk tugas itu. Perhatikan bahwa jika Anda menggunakan konfigurasi keamanan dalam pekerjaan, enkripsi juga berlaku untuk file log UI Spark. Untuk informasi selengkapnya, lihat [Mengenkripsi data yang ditulis oleh AWS Glue](encryption-security-configuration.md).

1. Di bawah **konfigurasi logging dan pemantauan Spark UI**:
   + Pilih **Standar** jika Anda membuat log untuk dilihat di AWS Glue konsol.
   + Pilih **Legacy** jika Anda membuat log untuk dilihat di server riwayat Spark.
   + Anda juga dapat memilih untuk menghasilkan keduanya.

## Mengkonfigurasi Spark UI (AWS CLI)
<a name="monitor-spark-ui-jobs-cli"></a>

Untuk menghasilkan log untuk dilihat dengan Spark UI, di AWS Glue konsol, gunakan AWS CLI untuk meneruskan parameter pekerjaan berikut ke AWS Glue pekerjaan. Untuk informasi selengkapnya, lihat [Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue](aws-glue-programming-etl-glue-arguments.md).

```
'--enable-spark-ui': 'true',
'--spark-event-logs-path': 's3://s3-event-log-path'
```

Untuk mendistribusikan log ke lokasi lawasannya, setel `--enable-spark-ui-legacy-path` parameternya ke`"true"`. Jika Anda tidak ingin menghasilkan log di kedua format, hapus `--enable-spark-ui` parameternya.

## Mengonfigurasi UI Spark untuk sesi menggunakan Notebook
<a name="monitor-spark-ui-sessions"></a>

**Awas**  
AWS Glue sesi interaktif saat ini tidak mendukung Spark UI di konsol. Konfigurasikan server riwayat Spark.

 Jika Anda menggunakan AWS Glue buku catatan, siapkan konfigurasi SparkUI sebelum memulai sesi. Untuk melakukan ini, gunakan sihir `%%configure` sel: 

```
%%configure { “--enable-spark-ui”: “true”, “--spark-event-logs-path”: “s3://path” }
```

## Aktifkan log bergulir
<a name="monitor-spark-ui-rolling-logs"></a>

 Mengaktifkan SparkUI dan bergulir file peristiwa log untuk AWS Glue pekerjaan memberikan beberapa manfaat: 
+  Rolling Log Event Files - Dengan file acara log bergulir diaktifkan, AWS Glue menghasilkan file log terpisah untuk setiap langkah pelaksanaan pekerjaan, sehingga lebih mudah untuk mengidentifikasi dan memecahkan masalah khusus untuk tahap atau transformasi tertentu. 
+  Manajemen Log yang Lebih Baik - File acara log bergulir membantu mengelola file log dengan lebih efisien. Alih-alih memiliki satu file log yang berpotensi besar, log dibagi menjadi file yang lebih kecil dan lebih mudah dikelola berdasarkan tahap eksekusi pekerjaan. Ini dapat menyederhanakan pengarsipan log, analisis, dan pemecahan masalah. 
+  Peningkatan Toleransi Kesalahan - Jika AWS Glue pekerjaan gagal atau terganggu, file acara log bergulir dapat memberikan informasi berharga tentang tahap sukses terakhir, sehingga lebih mudah untuk melanjutkan pekerjaan dari titik itu daripada memulai dari awal. 
+  Optimalisasi Biaya - Dengan mengaktifkan file peristiwa log bergulir, Anda dapat menghemat biaya penyimpanan yang terkait dengan file log. Alih-alih menyimpan satu file log yang berpotensi besar, Anda menyimpan file log yang lebih kecil dan lebih mudah dikelola, yang bisa lebih hemat biaya, terutama untuk pekerjaan yang berjalan lama atau kompleks. 

 Di lingkungan baru, pengguna dapat secara eksplisit mengaktifkan log bergulir melalui: 

```
'—conf': 'spark.eventLog.rolling.enabled=true'
```

atau

```
'—conf': 'spark.eventLog.rolling.enabled=true —conf 
spark.eventLog.rolling.maxFileSize=128m'
```

 Saat log bergulir diaktifkan, `spark.eventLog.rolling.maxFileSize` tentukan ukuran maksimum file log peristiwa sebelum berguling. Nilai default parameter opsional ini jika tidak ditentukan adalah 128 MB. Minimal adalah 10 MB. 

 Jumlah maksimum dari semua file peristiwa log gulung yang dihasilkan adalah 2 GB. Untuk AWS Glue pekerjaan tanpa dukungan log bergulir, ukuran file peristiwa log maksimum yang didukung untuk SparkUI adalah 0,5 GB. 

Anda dapat mematikan log bergulir untuk pekerjaan streaming dengan meneruskan konfigurasi tambahan. Perhatikan bahwa file log yang sangat besar mungkin mahal untuk dipelihara.

Untuk mematikan log bergulir, berikan konfigurasi berikut:

```
'--spark-ui-event-logs-path': 'true',
'--conf': 'spark.eventLog.rolling.enabled=false'
```

# Meluncurkan server sejarah Spark
<a name="monitor-spark-ui-history"></a>

Anda dapat menggunakan server riwayat Spark untuk memvisualisasikan log Spark pada infrastruktur Anda sendiri. Anda dapat melihat visualisasi yang sama di AWS Glue konsol untuk AWS Glue pekerjaan berjalan pada versi AWS Glue 4.0 atau yang lebih baru dengan log yang dihasilkan dalam format Standar (bukan warisan). Untuk informasi selengkapnya, lihat [Memantau pekerjaan menggunakan UI web Apache Spark](monitor-spark-ui.md).

Anda dapat meluncurkan server riwayat Spark menggunakan AWS CloudFormation templat yang menghosting server pada instans EC2, atau meluncurkan secara lokal menggunakan Docker.

**Topics**
+ [Meluncurkan server riwayat Spark dan melihat UI Spark menggunakan AWS CloudFormation](#monitor-spark-ui-history-cfn)
+ [Meluncurkan server riwayat Spark dan melihat UI Spark menggunakan Docker](#monitor-spark-ui-history-local)

## Meluncurkan server riwayat Spark dan melihat UI Spark menggunakan AWS CloudFormation
<a name="monitor-spark-ui-history-cfn"></a>

Anda dapat menggunakan AWS CloudFormation template untuk memulai server riwayat Apache Spark dan melihat UI web Spark. Templat ini adalah contoh yang harus Anda modifikasi untuk memenuhi kebutuhan Anda.

**Untuk memulai server riwayat Spark dan melihat UI Spark menggunakan CloudFormation**

1. Pilih salah satu tombol **Luncurkan Tumpukan** dalam tabel berikut. Ini meluncurkan tumpukan di CloudFormation konsol.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitor-spark-ui-history.html)

1. Pada halaman **Tentukan templat**, pilih **Selanjutnya**.

1. Di halaman **Tentukan detail tumpukan**, masukkan **Nama tumpukan**. Masukkan informasi tambahan di bawah **Parameter**.

   1. 

**Konfigurasi Spark UI**

      Berikan informasi berikut ini:
      + **Rentang alamat IP** — Rentang alamat IP yang dapat digunakan untuk melihat Spark UI. Jika Anda ingin membatasi akses dari rentang alamat IP tertentu, maka Anda harus menggunakan nilai kustom. 
      + **Port server riwayat** — Port untuk Spark UI. Anda dapat menggunakan nilai default.
      + **Direktori log peristiwa** — Pilih lokasi di mana log peristiwa Spark disimpan dari tugas AWS Glue atau titik akhir pengembangan. Anda harus menggunakan **s3a://** untuk skema path log peristiwa.
      + **Lokasi paket Spark** — Anda dapat menggunakan nilai default.
      + Jalur **keystore — jalur** SSL/TLS keystore untuk HTTPS. Jika Anda ingin menggunakan file keystore kustom, Anda dapat menentukan path S3 di sini `s3://path_to_your_keystore_file`. Jika Anda membiarkan parameter ini kosong, maka keystore berbasis sertifikat self-signed akan dihasilkan dan digunakan.
      + Kata **sandi keystore** - Masukkan kata sandi keystore SSL/TLS untuk HTTPS.

   1. 

**Konfigurasi instans EC2**

      Berikan informasi berikut ini:
      + **Tipe instans** — Jenis instans Amazon EC2 yang menjadi host server riwayat Spark. Karena templat ini meluncurkan instans Amazon EC2 di akun Anda, Amazon EC2 akan dikenakan biaya di akun Anda secara terpisah.
      + **ID AMI terbaru** — ID AMI dari Amazon Linux 2 untuk instans server riwayat Spark. Anda dapat menggunakan nilai default.
      + **ID VPC** — ID virtual private cloud (VPC) untuk instans server riwayat Spark. Anda dapat menggunakan salah satu yang VPCs tersedia di akun Anda Menggunakan VPC default dengan [ACL Jaringan default](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#default-network-acl) tidak disarankan. Untuk informasi selengkapnya, lihat [VPC Default dan Subnet Default](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) dan [Membuat VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC) di *Panduan Pengguna Amazon VPC*.
      + **ID Subnet** — ID untuk instans server riwayat Spark. Anda dapat menggunakan salah satu subnet di VPC Anda. Anda harus dapat mencapai jaringan dari klien Anda ke subnet tersebut. Jika Anda ingin mengakses melalui internet, maka Anda harus menggunakan subnet publik yang memiliki gateway internet di tabel rute.

   1. Pilih **Berikutnya**.

1. **Pada halaman **Configure stack options**, untuk menggunakan kredensyal pengguna saat ini untuk menentukan cara CloudFormation membuat, memodifikasi, atau menghapus sumber daya dalam tumpukan, pilih Berikutnya.** **Anda juga dapat menentukan peran di bagian **Izin** yang akan digunakan, bukan izin pengguna saat ini, lalu pilih Berikutnya.**

1. Pada halaman **Tinjau**, tinjau templat. 

   Pilih **Saya mengakui yang CloudFormation mungkin membuat sumber daya IAM**, dan kemudian pilih **Buat** tumpukan.

1. Tunggu tumpukan yang akan dibuat.

1. Buka tab **Output**.

   1. Salin URL **SparkUiPublicUrl**jika Anda menggunakan subnet publik.

   1. Salin URL **SparkUiPrivateUrl**jika Anda menggunakan subnet pribadi.

1. Buka peramban web, dan tempel di URL. Hal ini memungkinkan Anda mengakses server dengan menggunakan HTTPS pada port yang ditentukan. Peramban Anda mungkin tidak mengenali sertifikat server, di mana Anda harus mengganti perlindungannya dan terus melanjutkan. 

## Meluncurkan server riwayat Spark dan melihat UI Spark menggunakan Docker
<a name="monitor-spark-ui-history-local"></a>

Jika Anda lebih suka akses lokal (tidak memiliki instans EC2 untuk server riwayat Apache Spark), Anda juga dapat menggunakan Docker untuk memulai server riwayat Apache Spark dan melihat Spark UI secara lokal. Dockerfile ini adalah contoh yang Anda harus modifikasi untuk memenuhi kebutuhan Anda. 

 **Prasyarat** 

Untuk informasi tentang cara menginstal Docker di laptop Anda lihat [Komunitas Docker Engine](https://docs.docker.com/install/).

**Untuk memulai server riwayat Spark dan melihat Spark UI secara lokal menggunakan Docker**

1. Unduh file dari GitHub.

   Unduh Dockerfile dan `pom.xml` dari contoh [ AWS Gluekode](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/Spark_UI/).

1. Tentukan apakah Anda ingin menggunakan kredensyal pengguna atau kredensyal pengguna gabungan untuk mengakses. AWS
   + Untuk menggunakan kredensyal pengguna saat ini untuk mengakses AWS, dapatkan nilai yang akan digunakan untuk ` AWS_ACCESS_KEY_ID` dan `AWS_SECRET_ACCESS_KEY` dalam perintah. `docker run` Untuk informasi lebih lanjut, lihat [Mengelola access key untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) dalam *Panduan Pengguna IAM*.
   + Untuk menggunakan pengguna federasi SAMP 2.0 untuk mengakses AWS, dapatkan nilai untuk,` AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` dan. ` AWS_SESSION_TOKEN` Untuk informasi selengkapnya, lihat [Meminta kredensyal keamanan sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)

1. Tentukan lokasi direktori log peristiwa Anda, untuk digunakan dalam `docker run` perintah.

1. Buat gambar Docker menggunakan file di direktori lokal, menggunakan nama` glue/sparkui`, dan tag`latest`.

   ```
   $ docker build -t glue/sparkui:latest . 
   ```

1. Buat dan mulai wadah docker.

   Dalam perintah berikut, gunakan nilai yang diperoleh sebelumnya pada langkah 2 dan 3.

   1. Untuk membuat wadah docker menggunakan kredensyal pengguna Anda, gunakan perintah yang mirip dengan yang berikut

      ```
      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog
       -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY"
       -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
      ```

   1. Untuk membuat wadah docker menggunakan kredensyal sementara, gunakan ` org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider` sebagai penyedia, dan berikan nilai kredensi yang diperoleh pada langkah 2. Untuk informasi selengkapnya, lihat [Menggunakan Kredensyal Sesi dengan AWSCredentials Penyedia Sementara di dokumentasi](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Using_Session_Credentials_with_TemporaryAWSCredentialsProvider) *Hadoop: Integrasi dengan Amazon Web Services*.

      ```
      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog
       -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY
       -Dspark.hadoop.fs.s3a.session.token=AWS_SESSION_TOKEN
       -Dspark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider"
       -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
      ```
**catatan**  
Parameter konfigurasi ini berasal dari [ Hadoop-AWSModul](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html). Anda mungkin perlu menambahkan konfigurasi spesifik berdasarkan kasus penggunaan Anda. Misalnya: pengguna di wilayah terisolasi perlu mengkonfigurasi file` spark.hadoop.fs.s3a.endpoint`.

1. Buka `http://localhost:18080` di browser Anda untuk melihat UI Spark secara lokal.

# Pemantauan dengan wawasan menjalankan AWS Glue pekerjaan
<a name="monitor-job-insights"></a>

AWS Glue job run insights adalah fitur AWS Glue yang menyederhanakan debugging dan pengoptimalan pekerjaan untuk pekerjaan Anda. AWS Glue AWS Glue menyediakan [Spark UI](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui.html), serta [CloudWatch log dan metrik](https://docs.aws.amazon.com/glue/latest/dg/monitor-cloudwatch.html) untuk memantau pekerjaan Anda AWS Glue . Dengan fitur ini, Anda mendapatkan informasi ini tentang eksekusi AWS Glue pekerjaan Anda:
+ Nomor baris skrip AWS Glue pekerjaan Anda yang mengalami kegagalan.
+ Tindakan Spark yang dijalankan terakhir dalam rencana kueri Spark tepat sebelum kegagalan tugas Anda.
+ Peristiwa pengecualian Spark terkait dengan kegagalan yang disampaikan dalam log stream berurutan waktu.
+ Analisis akar penyebab dan tindakan yang disarankan (seperti menyempurnakan skrip Anda) untuk memperbaiki masalah.
+ Peristiwa Spark umum (pesan log yang berkaitan dengan tindakan Spark) dengan tindakan yang disarankan yang mengatasi akar penyebab.

Semua wawasan ini tersedia untuk Anda menggunakan dua aliran log baru di CloudWatch log untuk pekerjaan Anda AWS Glue .

## Persyaratan
<a name="monitor-job-insights-requirements"></a>

Fitur AWS Glue job run insights tersedia untuk AWS Glue versi 2.0 ke atas. Anda dapat mengikuti [panduan migrasi](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-30.html) untuk pekerjaan yang ada untuk memutakhirkannya dari AWS Glue versi yang lebih lama.

## Mengaktifkan wawasan menjalankan pekerjaan untuk pekerjaan ETL AWS Glue
<a name="monitor-job-insights-enable"></a>

Anda dapat mengaktifkan wawasan menjalankan pekerjaan melalui AWS Glue Studio atau CLI.

### AWS Glue Studio
<a name="monitor-job-insights-requirements"></a>

Saat membuat pekerjaan melalui AWS Glue Studio, Anda dapat mengaktifkan atau menonaktifkan wawasan menjalankan pekerjaan di bawah tab **Rincian Pekerjaan**. Centang apakah kotak **Hasilkan wawasan pekerjaan** dipilih.

![\[Mengaktifkan wawasan menjalankan pekerjaan di. AWS Glue Studio\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-job-run-insights-1.png)


### Baris perintah
<a name="monitor-job-insights-enable-cli"></a>

Jika membuat pekerjaan melalui CLI, Anda dapat memulai pekerjaan dengan satu [parameter pekerjaan](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html) baru:. `--enable-job-insights = true`

Secara default, aliran log wawasan job run dibuat di bawah grup log default yang sama yang digunakan oleh [logging AWS Glue berkelanjutan](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html), yaitu,. `/aws-glue/jobs/logs-v2/` Anda dapat mengatur nama grup log kustom, filter log, dan konfigurasi grup log menggunakan kumpulan argumen yang sama untuk pencatatan berkelanjutan. Untuk informasi selengkapnya, lihat [Mengaktifkan Pencatatan Berkelanjutan untuk AWS Glue Pekerjaan](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging-enable.html).

## Mengakses aliran log wawasan job run di CloudWatch
<a name="monitor-job-insights-access"></a>

Dengan fitur job run insights diaktifkan, mungkin ada dua aliran log yang dibuat saat pekerjaan dijalankan gagal. Ketika pekerjaan selesai dengan sukses, tidak satu pun dari aliran yang dihasilkan.

1. *Aliran log analisis pengecualian*:`<job-run-id>-job-insights-rca-driver`. Aliran ini menyediakan yang berikut:
   + Nomor baris skrip AWS Glue pekerjaan Anda yang menyebabkan kegagalan.
   + Tindakan percikan yang dieksekusi terakhir dalam rencana kueri Spark (DAG).
   + Peristiwa singkat yang diurutkan waktu dari driver Spark dan pelaksana yang terkait dengan pengecualian. Anda dapat menemukan detail seperti pesan kesalahan lengkap, tugas Spark yang gagal, dan ID pelaksana yang membantu Anda fokus pada aliran log pelaksana tertentu untuk penyelidikan lebih dalam jika diperlukan.

1. Aliran *wawasan berbasis aturan*: 
   + Analisis akar penyebab dan rekomendasi tentang cara memperbaiki kesalahan (seperti menggunakan parameter pekerjaan tertentu untuk mengoptimalkan kinerja).
   + Peristiwa Spark yang relevan berfungsi sebagai dasar untuk analisis akar penyebab dan tindakan yang direkomendasikan.

**catatan**  
Aliran pertama hanya akan ada jika peristiwa Spark pengecualian tersedia untuk menjalankan pekerjaan yang gagal, dan aliran kedua hanya akan ada jika ada wawasan yang tersedia untuk menjalankan pekerjaan yang gagal. Misalnya, jika pekerjaan Anda berhasil diselesaikan, tidak satu pun aliran akan dihasilkan; jika pekerjaan Anda gagal tetapi tidak ada aturan yang ditentukan layanan yang dapat cocok dengan skenario kegagalan Anda, maka hanya aliran pertama yang akan dihasilkan.

Jika pekerjaan dibuat dari AWS Glue Studio, tautan ke aliran di atas juga tersedia di bawah tab rincian pekerjaan (Wawasan Jalankan pekerjaan) sebagai “Log kesalahan ringkas dan terkonsolidasi” dan “Analisis dan panduan kesalahan”.

![\[Halaman Rincian Jalankan Pekerjaan yang berisi tautan ke aliran log.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-job-run-insights-2.png)


## Contoh untuk wawasan menjalankan AWS Glue pekerjaan
<a name="monitor-job-insights-example"></a>

Di bagian ini kami menyajikan contoh bagaimana fitur job run insights dapat membantu Anda menyelesaikan masalah dalam pekerjaan yang gagal. Dalam contoh ini, pengguna lupa mengimpor modul yang diperlukan (tensorflow) dalam AWS Glue pekerjaan untuk menganalisis dan membangun model pembelajaran mesin pada data mereka.

```
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql.types import *
from pyspark.sql.functions import udf,col

args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

data_set_1 = [1, 2, 3, 4]
data_set_2 = [5, 6, 7, 8]

scoresDf = spark.createDataFrame(data_set_1, IntegerType())

def data_multiplier_func(factor, data_vector):
    import tensorflow as tf
    with tf.compat.v1.Session() as sess:
        x1 = tf.constant(factor)
        x2 = tf.constant(data_vector)
        result = tf.multiply(x1, x2)
        return sess.run(result).tolist()

data_multiplier_udf = udf(lambda x:data_multiplier_func(x, data_set_2), ArrayType(IntegerType(),False))
factoredDf = scoresDf.withColumn("final_value", data_multiplier_udf(col("value")))
print(factoredDf.collect())
```

Tanpa fitur job run insights, karena pekerjaan gagal, Anda hanya melihat pesan ini dilemparkan oleh Spark:

`An error occurred while calling o111.collectToPython. Traceback (most recent call last):`

Pesannya ambigu dan membatasi pengalaman debugging Anda. Dalam hal ini, fitur ini memberi Anda wawasan tambahan dalam dua aliran CloudWatch log:

1. Aliran `job-insights-rca-driver` log:
   + *Peristiwa pengecualian*: Aliran log ini memberi Anda peristiwa pengecualian Spark yang terkait dengan kegagalan yang dikumpulkan dari driver Spark dan pekerja terdistribusi yang berbeda. Peristiwa ini membantu Anda memahami propagasi pengecualian yang diatur waktu karena kode yang salah dijalankan di seluruh tugas Spark, pelaksana, dan tahapan yang didistribusikan ke seluruh pekerja. AWS Glue 
   + *Nomor baris*: Aliran log ini mengidentifikasi baris 21, yang membuat panggilan untuk mengimpor modul Python yang hilang yang menyebabkan kegagalan; itu juga mengidentifikasi baris 24, panggilan ke Spark `collect()` Action, sebagai baris terakhir yang dieksekusi dalam skrip Anda.  
![\[Aliran job-insights-rca-driver log.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-job-run-insights-3.png)

1. Aliran `job-insights-rule-driver` log:
   + *Akar penyebab dan rekomendasi*: Selain nomor baris dan nomor baris terakhir yang dieksekusi untuk kesalahan dalam skrip Anda, aliran log ini menunjukkan analisis akar penyebab dan rekomendasi bagi Anda untuk mengikuti AWS Glue dokumen dan mengatur parameter pekerjaan yang diperlukan untuk menggunakan modul Python tambahan dalam pekerjaan Anda AWS Glue . 
   + *Peristiwa dasar*: Aliran log ini juga menunjukkan peristiwa pengecualian Spark yang dievaluasi dengan aturan yang ditentukan layanan untuk menyimpulkan akar penyebab dan memberikan rekomendasi.  
![\[Aliran job-insights-rule-driver log.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-job-run-insights-4.png)

# Pemantauan CloudWatch dengan Amazon
<a name="monitor-cloudwatch"></a>

Anda dapat memantau AWS Glue menggunakan Amazon CloudWatch, yang mengumpulkan dan memproses data mentah dari AWS Glue menjadi metrik yang dapat dibaca. near-real-time Statistik ini dicatat selama jangka waktu dua minggu, sehingga Anda dapat mengakses informasi historis untuk perspektif yang lebih baik tentang performa aplikasi web atau layanan Anda. Secara default, data AWS Glue metrik dikirim secara CloudWatch otomatis. Untuk informasi lebih lanjut, lihat [Apa itu Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html) di *Panduan CloudWatch Pengguna Amazon*, dan[AWS Glue metrik](monitoring-awsglue-with-cloudwatch-metrics.md#awsglue-metrics).

 **Penebangan terus menerus** 

AWS Glue juga mendukung pencatatan log berkelanjutan waktu nyata untuk tugas AWS Glue. Saat pencatatan berkelanjutan diaktifkan untuk suatu pekerjaan, Anda dapat melihat log waktu nyata di AWS Glue konsol atau dasbor CloudWatch konsol. Untuk informasi selengkapnya, lihat [Logging untuk AWS Glue pekerjaan](monitor-continuous-logging.md).

 **Metrik observabilitas** 

 Saat **metrik observabilitas Job** diaktifkan, Amazon CloudWatch metrik tambahan akan dihasilkan saat job dijalankan. Gunakan metrik AWS Glue Observability untuk menghasilkan wawasan tentang apa yang terjadi di dalam diri Anda AWS Glue untuk meningkatkan triaging dan analisis masalah. 

**Topics**
+ [Pemantauan AWS Glue menggunakan CloudWatch metrik Amazon](monitoring-awsglue-with-cloudwatch-metrics.md)
+ [Menyiapkan CloudWatch alarm Amazon di profil AWS Glue pekerjaan](monitor-profile-glue-job-cloudwatch-alarms.md)
+ [Logging untuk AWS Glue pekerjaan](monitor-continuous-logging.md)
+ [Pemantauan dengan metrik AWS Glue Observabilitas](monitor-observability.md)

# Pemantauan AWS Glue menggunakan CloudWatch metrik Amazon
<a name="monitoring-awsglue-with-cloudwatch-metrics"></a>

Anda dapat membuat profil dan memantau operasi AWS Glue menggunakan pembuat profil tugas AWS Glue. Ini mengumpulkan dan memproses data mentah dari AWS Glue pekerjaan menjadi metrik yang dapat dibaca, mendekati waktu nyata yang disimpan di Amazon. CloudWatch Statistik ini disimpan dan dikumpulkan CloudWatch sehingga Anda dapat mengakses informasi historis untuk perspektif yang lebih baik tentang kinerja aplikasi Anda.

**catatan**  
 Anda mungkin dikenakan biaya tambahan saat mengaktifkan metrik pekerjaan dan metrik CloudWatch khusus dibuat. Untuk informasi selengkapnya, lihat [ CloudWatch harga Amazon](https://aws.amazon.com/cloudwatch/pricing/). 

## AWS Glueikhtisar metrik
<a name="metrics-overview"></a>

Saat Anda berinteraksiAWS Glue, itu mengirimkan metrik ke CloudWatch. Anda dapat melihat metrik ini menggunakan AWS Glue konsol (metode pilihan), dasbor CloudWatch konsol, atau AWS Command Line Interface (AWS CLI). 

**Untuk melihat metrik menggunakan dasbor konsol AWS Glue**

Anda dapat melihat gambaran umum atau grafik detail metrik untuk tugas, atau grafik terperinci untuk eksekusi tugas. 

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Job run monitoring**.

1. Di **Job run** pilih **Tindakan** untuk menghentikan pekerjaan yang sedang berjalan, melihat pekerjaan, atau memundurkan bookmark pekerjaan.

1. Pilih pekerjaan, lalu pilih **Lihat rincian jalankan** untuk melihat informasi tambahan tentang pekerjaan yang dijalankan.

**Untuk melihat metrik menggunakan dasbor CloudWatch konsol**

Metrik dikelompokkan terlebih dahulu berdasarkan namespace layanan, lalu berdasarkan berbagai kombinasi dimensi dalam setiap namespace.

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Pada panel navigasi, silakan pilih **Metrik**.

1. Pilih namespace **Glue**.

**Untuk melihat metrik menggunakan AWS CLI**
+ Pada prompt perintah, gunakan perintah berikut.

  ```
  1. aws cloudwatch list-metrics --namespace Glue
  ```

AWS Gluemelaporkan metrik CloudWatch setiap 30 detik, dan dasbor CloudWatch metrik dikonfigurasi untuk menampilkannya setiap menit. Metrik AWS Glue merupakan nilai delta dari nilai yang dilaporkan sebelumnya. Jika sesuai, dasbor metrik meng-agregat (jumlah) nilai 30 detik untuk mendapatkan nilai untuk seluruh menit terakhir.

### AWS Glue perilaku metrik untuk pekerjaan Spark
<a name="metrics-overview-spark"></a>

 AWS Gluemetrik diaktifkan pada inisialisasi `GlueContext` dalam skrip dan umumnya diperbarui hanya pada akhir tugas Apache Spark. Mereka mewakili nilai-nilai agregat di semua tugas Spark yang sudah selesai sejauh ini.

Namun, metrik Spark yang AWS Glue diteruskan ke umumnya CloudWatch merupakan nilai absolut yang mewakili keadaan saat ini pada saat dilaporkan. AWS Gluemelaporkannya CloudWatch setiap 30 detik, dan dasbor metrik umumnya menunjukkan rata-rata di seluruh titik data yang diterima dalam 1 menit terakhir.

Nama metrik AWS Glue semuanya didahului oleh salah satu jenis prefiks berikut:
+ `glue.driver.` — Metrik yang namanya dimulai dengan prefiks ini mewakili metrik AWS Glue yang dikumpulkan dari semua pelaksana di driver Spark, atau metrik Spark yang sesuai dengan driver Spark.
+ `glue.`*executorId*`.` — *executorId* adalah nomor pelaksana Spark tertentu. Nomor itu sesuai dengan pelaksana yang tercantum dalam log.
+ `glue.ALL.` — Metrik yang namanya dimulai dengan prefiks ini menjumlahkan nilai dari semua pelaksana Spark.

## AWS Glue metrik
<a name="awsglue-metrics"></a>

AWS Glue profil dan mengirimkan metrik berikut ke CloudWatch setiap 30 detik, dan Dasbor AWS Glue Metrik melaporkannya sekali dalam satu menit:


| Metrik | Deskripsi | 
| --- | --- | 
|  `glue.driver.aggregate.bytesRead` |  Jumlah byte yang dibaca dari semua sumber data oleh semua tugas Spark yang diselesaikan yang berjalan di semua pelaksana. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi.  Unit: Bita Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Metrik ini dapat digunakan dengan cara yang sama seperti metrik `glue.ALL.s3.filesystem.read_bytes`, dengan perbedaan bahwa metrik ini diperbarui pada akhir tugas Spark dan menangkap sumber data non-S3 juga.  | 
|  `glue.driver.aggregate.elapsedTime` |  Waktu berlalu ETL dinyatakan dalam milidetik (tidak termasuk waktu bootstrap tugas). Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Satuan: Milidetik Dapat digunakan untuk menentukan berapa lama waktu rata-rata yang dibutuhkan untuk menjalankan sebuah eksekusi tugas. Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.aggregate.numCompletedStages` |  Jumlah tahap yang diselesaikan dalam tugas. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.aggregate.numCompletedTasks` |  Jumlah tugas yang telah selesai dalam tugas tersebut. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.aggregate.numFailedTasks` |  Jumlah tugas yang gagal. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Data dapat digunakan untuk mengatur alarm untuk peningkatan kegagalan yang mungkin menunjukkan kelainan pada data, klaster atau skrip.  | 
|  `glue.driver.aggregate.numKilledTasks` |  Jumlah tugas yang dihentikan. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.aggregate.recordsRead` |  Jumlah catatan yang dibaca dari semua sumber data oleh semua tugas Spark yang telah diselesaikan yang berjalan di semua pelaksana.. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Metrik ini dapat digunakan dengan cara yang serupa seperti metrik `glue.ALL.s3.filesystem.read_bytes`, dengan perbedaan bahwa metrik ini diperbarui pada akhir tugas Spark.  | 
|   `glue.driver.aggregate.shuffleBytesWritten` |  Jumlah byte yang ditulis oleh semua pelaksana untuk mengacak data di antara mereka sejak laporan sebelumnya (digabungkan oleh Dasbor AWS Glue Metrik sebagai jumlah byte yang ditulis untuk tujuan ini selama menit sebelumnya). Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Unit: Bita Dapat digunakan untuk memantau: Acakan data dalam tugas (gabungan besar, groupBy, partisi ulang, menyatu). Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.aggregate.shuffleLocalBytesRead` |  Jumlah byte yang dibaca oleh semua pelaksana untuk mengacak data di antara mereka sejak laporan sebelumnya (digabungkan oleh Dasbor AWS Glue Metrik sebagai jumlah byte yang dibaca untuk tujuan ini selama menit sebelumnya). Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi pada Dasbor AWS Glue Metrik, statistik SUM digunakan untuk agregasi. Unit: Bita Dapat digunakan untuk memantau: Acakan data dalam tugas (gabungan besar, groupBy, partisi ulang, menyatu). Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.BlockManager.disk.diskSpaceUsed_MB` |  Jumlah megabyte ruang disk yang digunakan di semua pelaksana. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (gauge). Statistik yang valid: Rata-rata. Ini adalah sebuah metrik Spark, yang dilaporkan sebagai nilai absolut. Satuan: Megabyte Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.ExecutorAllocationManager.executors.numberAllExecutors` |  Jumlah aktif pelaksana tugas yang berjalan. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (gauge). Statistik yang valid: Rata-rata. Ini adalah sebuah metrik Spark, yang dilaporkan sebagai nilai absolut. Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors` |  Jumlah maksimum (aktif berjalan dan tertunda) pelaksana tugas yang diperlukan untuk memenuhi beban saat ini. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (gauge). Statistik yang Valid: Maksimum. Ini adalah sebuah metrik Spark, yang dilaporkan sebagai nilai absolut. Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.jvm.heap.usage`  `glue.`*executorId*`.jvm.heap.usage`  `glue.ALL.jvm.heap.usage`  |  Fraksi memori digunakan oleh tumpukan JVM untuk driver ini (skala: 0-1) untuk driver, pelaksana diidentifikasi oleh executorId, atau SEMUA pelaksana. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (gauge). Statistik yang valid: Rata-rata. Ini adalah sebuah metrik Spark, yang dilaporkan sebagai nilai absolut. Unit: Persentase Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.jvm.heap.used`  `glue.`*executorId*`.jvm.heap.used`  `glue.ALL.jvm.heap.used`  |  Jumlah byte memori yang digunakan oleh timbunan JVM untuk driver, pelaksana yang diidentifikasi oleh *executorId*, atau SEMUA pelaksana. Dimensi yang valid: `JobName` (nama AWS Glue Job), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (gauge). Statistik yang valid: Rata-rata. Ini adalah sebuah metrik Spark, yang dilaporkan sebagai nilai absolut. Unit: Bita Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.s3.filesystem.read_bytes`  `glue.`*executorId*`.s3.filesystem.read_bytes`  `glue.ALL.s3.filesystem.read_bytes`  |  Jumlah byte yang dibaca dari Amazon S3 oleh driver, eksekutor yang diidentifikasi oleh *ExecutorID*, atau SEMUA pelaksana sejak laporan sebelumnya (digabungkan oleh AWS Glue Dasbor Metrik sebagai jumlah byte yang dibaca selama menit sebelumnya). Dimensi yang valid: `JobName`, `JobRunId`, dan `Type`(meteran). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi di Dasbor AWS Glue Metrik statistik SUM digunakan untuk agregasi. Area di bawah kurva pada Dasbor AWS Glue Metrik dapat digunakan untuk membandingkan byte secara visual yang dibaca oleh dua pekerjaan yang berbeda. Unit: Byte. Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Data yang dihasilkan dapat digunakan untuk: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.s3.filesystem.write_bytes`  `glue.`*executorId*`.s3.filesystem.write_bytes`  `glue.ALL.s3.filesystem.write_bytes`  |  Jumlah byte yang ditulis ke Amazon S3 oleh driver, eksekutor yang diidentifikasi oleh *ExecutorID*, atau SEMUA pelaksana sejak laporan sebelumnya (digabungkan oleh AWS Glue Dasbor Metrik sebagai jumlah byte yang ditulis selama menit sebelumnya). Dimensi yang valid: `JobName`, `JobRunId`, dan `Type`(meteran). Statistik yang valid: SUM. Metrik ini adalah nilai delta dari nilai terakhir yang dilaporkan, jadi di Dasbor AWS Glue Metrik statistik SUM digunakan untuk agregasi. Area di bawah kurva pada Dasbor AWS Glue Metrik dapat digunakan untuk membandingkan byte secara visual yang ditulis oleh dua pekerjaan yang berbeda. Unit: Bita Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.streaming.numRecords` |  Jumlah catatan yang diterima dalam batch mikro. Metrik ini hanya tersedia untuk pekerjaan AWS Glue streaming dengan AWS Glue versi 2.0 ke atas. Dimensi yang valid: `JobName` (nama AWS Glue pekerjaan), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang Valid: Jumlah, Maksimum, Minimum, Rata-rata, Persentil Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.streaming.batchProcessingTimeInMs` |  Waktu yang dibutuhkan untuk memproses batch dalam milidetik. Metrik ini hanya tersedia untuk pekerjaan AWS Glue streaming dengan AWS Glue versi 2.0 ke atas. Dimensi yang valid: `JobName` (nama AWS Glue pekerjaan), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (hitung). Statistik yang Valid: Jumlah, Maksimum, Minimum, Rata-rata, Persentil Unit: Jumlah Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.system.cpuSystemLoad`  `glue.`*executorId*`.system.cpuSystemLoad`  `glue.ALL.system.cpuSystemLoad`  |  Fraksi beban sistem CPU yang digunakan (skala: 0-1) oleh driver, yakni pelaksana yang diidentifikasi oleh *executorId*, atau SEMUA pelaksana. Dimensi yang valid: `JobName` (nama AWS Glue pekerjaan), `JobRunId` ( JobRun ID. atau`ALL`), dan `Type` (pengukur). Statistik yang valid: Rata-rata. Ini adalah sebuah metrik yang dilaporkan sebagai nilai absolut. Unit: Persentase Dapat digunakan untuk memantau: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Beberapa cara menggunakan data: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 

## Dimensi untuk AWS Glue Metrik
<a name="awsglue-metricdimensions"></a>

AWS Glue metrik menggunakan AWS Glue namespace dan menyediakan metrik untuk dimensi berikut:


| Dimensi | Deskripsi | 
| --- | --- | 
|  `JobName`  |  Dimensi ini menyaring metrik semua pekerjaan yang dijalankan dari AWS Glue pekerjaan tertentu.  | 
|  `JobRunId`  |  Dimensi ini menyaring metrik AWS Glue pekerjaan tertentu yang dijalankan oleh JobRun ID, atau`ALL`.  | 
|  `Type`  |  Dimensi ini mem-filter untuk metrik dengan `count` (jumlah agregat) atau `gauge` (nilai pada satu titik waktu).  | 

Untuk informasi selengkapnya, lihat [Panduan CloudWatch Pengguna Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

# Menyiapkan CloudWatch alarm Amazon di profil AWS Glue pekerjaan
<a name="monitor-profile-glue-job-cloudwatch-alarms"></a>

AWS Gluemetrik juga tersedia di Amazon CloudWatch. Anda dapat mengatur alarm pada metrik AWS Glue untuk tugas terjadwal. 

Beberapa skenario umum untuk menyiapkan alarm adalah sebagai berikut:
+ Tugas kehabisan memori (OOM): Mengatur alarm ketika penggunaan memori melebihi penggunaan rata-rata normal untuk driver atau pelaksana untuk sebuah tugas AWS Glue.
+ Pelaksana yang memiliki performa buruk: Mengatur alarm ketika jumlah pelaksana jatuh di bawah ambang batas tertentu selama durasi waktu yang besar dalam sebuah tugas AWS Glue.
+ Data backlog atau pemrosesan ulang: Bandingkan metrik dari masing-masing pekerjaan dalam alur kerja menggunakan ekspresi matematika. CloudWatch Anda kemudian dapat memicu alarm pada nilai ekspresi yang dihasilkan (seperti rasio byte yang ditulis oleh tugas dan byte dibaca oleh tugas berikut).

Untuk petunjuk mendetail tentang pengaturan alarm, lihat [Membuat atau Mengedit CloudWatch Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html) di *[Panduan Pengguna CloudWatch Acara Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/)*. 

Untuk memantau dan men-debug skenario menggunakan CloudWatch, lihat[Pemantauan dan debugging Job](monitor-profile-glue-job-cloudwatch-metrics.md).

# Logging untuk AWS Glue pekerjaan
<a name="monitor-continuous-logging"></a>

 Di AWS Glue 5.0, semua pekerjaan memiliki kemampuan pencatatan waktu nyata. Selain itu, Anda dapat menentukan opsi konfigurasi khusus untuk menyesuaikan perilaku logging. Opsi ini termasuk pengaturan nama grup Amazon CloudWatch log, awalan aliran Amazon CloudWatch log (yang akan mendahului ID dan driver/executor ID menjalankan AWS Glue pekerjaan), dan pola konversi log untuk pesan log. Konfigurasi ini memungkinkan Anda untuk menggabungkan log dalam grup Amazon CloudWatch log kustom dengan kebijakan kedaluwarsa yang berbeda. Selanjutnya, Anda dapat menganalisis log secara lebih efektif dengan menggunakan awalan aliran log kustom dan pola konversi. Tingkat penyesuaian ini memungkinkan Anda untuk mengoptimalkan manajemen dan analisis log sesuai dengan kebutuhan spesifik Anda. 

## Perilaku logging di AWS Glue 5.0
<a name="monitor-logging-behavior-glue-50"></a>

 Secara default, log sistem, log daemon Spark, dan log AWS Glue Logger pengguna ditulis ke grup log di`/aws-glue/jobs/error`. Amazon CloudWatch Di sisi lain, log stdout pengguna (output standar) dan stderr (kesalahan standar) ditulis ke grup `/aws-glue/jobs/output` log secara default. 

## Pencatatan kustom
<a name="monitor-logging-custom"></a>

 Anda dapat menyesuaikan grup log default dan awalan aliran log menggunakan argumen pekerjaan berikut: 
+  `--custom-logGroup-prefix`: Memungkinkan Anda menentukan awalan khusus untuk grup `/aws-glue/jobs/error` dan `/aws-glue/jobs/output` log. Jika Anda memberikan awalan kustom, nama grup log akan dalam format berikut: 
  +  `/aws-glue/jobs/error` adalah `<customer prefix>/error` 
  +  `/aws-glue/jobs/output ` adalah `<customer prefix>/output` 
+  `--custom-logStream-prefix`: Memungkinkan Anda menentukan awalan khusus untuk nama aliran log dalam grup log. Jika Anda memberikan awalan khusus, nama aliran log akan dalam format berikut: 
  +  `jobrunid-driver` adalah `<customer log stream>-driver` 
  +  `jobrunid-executorNum` adalah `<customer log stream>-executorNum` 

 Aturan validasi dan batasan untuk awalan kustom: 
+  Seluruh nama aliran log harus antara 1 dan 512 karakter. 
+  Awalan kustom itu sendiri dibatasi hingga 400 karakter. 
+  Awalan kustom harus cocok dengan pola ekspresi reguler `[^: \$1] \$1` (karakter khusus yang diizinkan adalah '\$1', '-', dan '/'). 

## Mencatat pesan khusus aplikasi menggunakan pencatat skrip kustom
<a name="monitor-logging-script"></a>

Anda dapat menggunakan AWS Glue logger untuk mencatat pesan khusus aplikasi apa pun dalam skrip yang dikirim secara real time ke aliran log driver.

Contoh berikut menunjukkan skrip Python.

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
logger = glueContext.get_logger()
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
```

Contoh berikut menunjukkan skrip Scala.

```
import com.amazonaws.services.glue.log.GlueLogger

object GlueApp {
  def main(sysArgs: Array[String]) {
    val logger = new GlueLogger
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
  }
}
```

## Mengaktifkan bilah kemajuan untuk menunjukkan kemajuan pekerjaan
<a name="monitor-logging-progress"></a>

AWS Glue menyediakan bilah kemajuan waktu nyata di bawah aliran `JOB_RUN_ID-progress-bar` log untuk memeriksa status menjalankan AWS Glue pekerjaan. Saat ini hanya mendukung tugas yang menginisialisasi `glueContext`. Jika Anda menjalankan pekerjaan Spark murni tanpa menginisialisasi`glueContext`, bilah AWS Glue kemajuan tidak muncul.

Bilah kemajuan tersebut menunjukkan pembaruan kemajuan berikut setiap 5 detik.

```
Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
```

## Konfigurasi keamanan dengan Amazon CloudWatch logging
<a name="monitor-security-config-logging"></a>

 Saat konfigurasi keamanan diaktifkan untuk Amazon CloudWatch log, AWS Glue buat grup log dengan pola penamaan tertentu yang menggabungkan nama konfigurasi keamanan. 

### Penamaan grup log dengan konfigurasi keamanan
<a name="monitor-log-group-naming"></a>

 Grup log default dan kustom adalah sebagai berikut: 
+  **Grup log kesalahan default:** `/aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/error` 
+  **Grup log keluaran default:** `/aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/output` 
+  **Grup log kesalahan kustom (AWS Glue 5.0):** `custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/error` 
+  **Grup log keluaran kustom (AWS Glue 5.0):** `custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/output` 

### Izin IAM yang Diperlukan
<a name="monitor-logging-iam-permissions"></a>

 Anda perlu menambahkan `logs:AssociateKmsKey` izin ke izin peran IAM Anda, jika Anda mengaktifkan konfigurasi keamanan dengan Amazon CloudWatch Log. Jika izin tersebut tidak disertakan, maka pencatatan log berkelanjutan akan dinonaktifkan. 

 Selain itu, untuk mengonfigurasi enkripsi untuk Amazon CloudWatch Log, ikuti petunjuk di [Enkripsi Data Log di Amazon CloudWatch Log Menggunakan AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) di Panduan Pengguna Amazon Amazon CloudWatch Logs. 

### Informasi tambahan
<a name="additional-info"></a>

 Untuk informasi selengkapnya tentang membuat konfigurasi keamanan, lihat [Mengelola konfigurasi keamanan di konsol. AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-security-configurations.html) 

**Topics**
+ [Perilaku logging di AWS Glue 5.0](#monitor-logging-behavior-glue-50)
+ [Pencatatan kustom](#monitor-logging-custom)
+ [Mencatat pesan khusus aplikasi menggunakan pencatat skrip kustom](#monitor-logging-script)
+ [Mengaktifkan bilah kemajuan untuk menunjukkan kemajuan pekerjaan](#monitor-logging-progress)
+ [Konfigurasi keamanan dengan Amazon CloudWatch logging](#monitor-security-config-logging)
+ [Mengaktifkan pencatatan berkelanjutan untuk AWS Glue pekerjaan 4.0 dan sebelumnya](monitor-continuous-logging-enable.md)
+ [Melihat log untuk AWS Glue pekerjaan](monitor-continuous-logging-view.md)

# Mengaktifkan pencatatan berkelanjutan untuk AWS Glue pekerjaan 4.0 dan sebelumnya
<a name="monitor-continuous-logging-enable"></a>

**catatan**  
 Di versi AWS Glue 4.0 dan versi sebelumnya, logging berkelanjutan adalah fitur yang tersedia. Namun, dengan diperkenalkannya AWS Glue 5.0, semua pekerjaan memiliki kemampuan pencatatan waktu nyata. Untuk detail selengkapnya tentang kemampuan logging dan opsi konfigurasi di AWS Glue 5.0, lihat [Logging untuk AWS Glue lowongan](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html). 

Anda dapat mengaktifkan logging terus menerus menggunakan AWS Glue konsol atau melalui AWS Command Line Interface (AWS CLI). 

Anda dapat mengaktifkan pencatatan berkelanjutan saat membuat pekerjaan baru, mengedit pekerjaan yang ada, atau mengaktifkannya melalui AWS CLI.

Anda juga dapat menentukan opsi konfigurasi khusus seperti nama grup Amazon CloudWatch log, awalan aliran CloudWatch log sebelum ID driver/executor ID menjalankan AWS Glue pekerjaan, dan pola konversi log untuk pesan log. Konfigurasi ini membantu Anda mengatur log agregat dalam grup CloudWatch log kustom dengan kebijakan kedaluwarsa yang berbeda, dan menganalisisnya lebih lanjut dengan awalan aliran log kustom dan pola konversi. 

**Topics**
+ [Menggunakan Konsol Manajemen AWS](#monitor-continuous-logging-enable-console)
+ [Mencatat pesan khusus aplikasi menggunakan pencatat skrip kustom](#monitor-continuous-logging-script)
+ [Mengaktifkan bilah kemajuan untuk menunjukkan kemajuan pekerjaan](#monitor-continuous-logging-progress)
+ [Konfigurasi keamanan dengan pencatatan terus menerus](#monitor-logging-encrypt-log-data)

## Menggunakan Konsol Manajemen AWS
<a name="monitor-continuous-logging-enable-console"></a>

Ikuti langkah-langkah ini untuk menggunakan konsol untuk mengaktifkan pencatatan berkelanjutan saat membuat atau mengedit AWS Glue pekerjaan.

**Untuk membuat AWS Glue pekerjaan baru dengan logging berkelanjutan**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih pekerjaan **ETL**.

1. Pilih **Visual ETL**.

1. Di tab **Job details**, perluas bagian **Advanced properties**.

1. Di bawah **Pencatatan berkelanjutan** pilih **Aktifkan log masuk CloudWatch**.

**Untuk mengaktifkan pencatatan berkelanjutan untuk AWS Glue pekerjaan yang ada**

1. Buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Tugas**.

1. Pilih sebuah tugas yang ada dari daftar **Tugas**.

1. Pilih **Tindakan**, **Edit tugas**.

1. Di tab **Job details**, perluas bagian **Advanced properties**.

1. Di bawah **Pencatatan berkelanjutan** pilih **Aktifkan log masuk CloudWatch**.

### Menggunakan AWS CLI
<a name="monitor-continuous-logging-cli"></a>

Untuk mengaktifkan pencatatan berkelanjutan, Anda meneruskan parameter pekerjaan ke AWS Glue pekerjaan. Lewati parameter pekerjaan khusus berikut yang mirip dengan parameter AWS Glue pekerjaan lainnya. Untuk informasi selengkapnya, lihat [Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue](aws-glue-programming-etl-glue-arguments.md).

```
'--enable-continuous-cloudwatch-log': 'true'
```

Anda dapat menentukan nama grup CloudWatch log Amazon kustom. Jika tidak ditentukan, nama grup log default-nya adalah `/aws-glue/jobs/logs-v2`.

```
'--continuous-log-logGroup': 'custom_log_group_name'
```

Anda dapat menentukan awalan aliran CloudWatch log Amazon kustom. Jika tidak ditentukan, prefiks pengaliran log default-nya adalah ID eksekusi tugas.

```
'--continuous-log-logStreamPrefix': 'custom_log_stream_prefix'
```

Anda dapat menentukan sebuah pola konversi pencatatan log berkelanjutan kustom. Jika tidak ditentukan, maka pola konversi default-nya adalah `%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n`. Perhatikan bahwa pola konversi hanya berlaku untuk log driver dan log pelaksana. Itu tidak mempengaruhi bilah kemajuan AWS Glue .

```
'--continuous-log-conversionPattern': 'custom_log_conversion_pattern'
```

## Mencatat pesan khusus aplikasi menggunakan pencatat skrip kustom
<a name="monitor-continuous-logging-script"></a>

Anda dapat menggunakan AWS Glue logger untuk mencatat pesan khusus aplikasi apa pun dalam skrip yang dikirim secara real time ke aliran log driver.

Contoh berikut menunjukkan skrip Python.

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
logger = glueContext.get_logger()
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
```

Contoh berikut menunjukkan skrip Scala.

```
import com.amazonaws.services.glue.log.GlueLogger

object GlueApp {
  def main(sysArgs: Array[String]) {
    val logger = new GlueLogger
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
  }
}
```

## Mengaktifkan bilah kemajuan untuk menunjukkan kemajuan pekerjaan
<a name="monitor-continuous-logging-progress"></a>

AWS Glue menyediakan bilah kemajuan waktu nyata di bawah aliran `JOB_RUN_ID-progress-bar` log untuk memeriksa status menjalankan AWS Glue pekerjaan. Saat ini hanya mendukung tugas yang menginisialisasi `glueContext`. Jika Anda menjalankan pekerjaan Spark murni tanpa menginisialisasi`glueContext`, bilah AWS Glue kemajuan tidak muncul.

Bilah kemajuan tersebut menunjukkan pembaruan kemajuan berikut setiap 5 detik.

```
Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
```

## Konfigurasi keamanan dengan pencatatan terus menerus
<a name="monitor-logging-encrypt-log-data"></a>

Jika konfigurasi keamanan diaktifkan untuk CloudWatch log, AWS Glue akan membuat grup log bernama sebagai berikut untuk log berkelanjutan:

```
<Log-Group-Name>-<Security-Configuration-Name>
```

Grup log default dan kustom adalah sebagai berikut:
+ Grup pencatatan log berkelanjutan default adalah `/aws-glue/jobs/error-<Security-Configuration-Name>`
+ Grup pencatatan log berkelanjutan kustom adalah `<custom-log-group-name>-<Security-Configuration-Name>`

Anda perlu menambahkan izin peran IAM Anda, jika Anda mengaktifkan konfigurasi keamanan dengan CloudWatch Log. `logs:AssociateKmsKey` Jika izin tersebut tidak disertakan, maka pencatatan log berkelanjutan akan dinonaktifkan. Selain itu, untuk mengonfigurasi enkripsi untuk CloudWatch Log, ikuti petunjuk di [Enkripsi Data Log di CloudWatch Log Menggunakan AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) di *Panduan Pengguna Amazon CloudWatch Logs*.

Untuk informasi selengkapnya tentang cara membuat konfigurasi keamanan, lihat [Mengelola konfigurasi keamanan di konsol AWS Glue](console-security-configurations.md).

**catatan**  
 Anda mungkin dikenakan biaya tambahan saat mengaktifkan pencatatan dan peristiwa CloudWatch log tambahan dibuat. Untuk informasi selengkapnya, lihat [ CloudWatch harga Amazon](https://aws.amazon.com/cloudwatch/pricing/). 

# Melihat log untuk AWS Glue pekerjaan
<a name="monitor-continuous-logging-view"></a>

Anda dapat melihat log waktu nyata menggunakan AWS Glue konsol atau CloudWatch konsol Amazon.

**Untuk melihat log waktu nyata menggunakan dasbor AWS Glue konsol**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Tugas**.

1. Menambahkan atau memulai tugas yang sudah ada. Pilih **Tindakan**, **Jalankan tugas**.

   Ketika Anda mulai menjalankan tugas, Anda akan membuka halaman yang berisi informasi tentang tugas yang sedang berjalan:
   + Tab **Log** menunjukkan log aplikasi agregat yang lebih tua.
   + Tab **Log** menampilkan bilah kemajuan waktu nyata saat pekerjaan dijalankan dengan `glueContext` diinisialisasi.
   + Tab **Log** juga berisi **log Driver**, yang menangkap log driver Apache Spark real-time, dan log aplikasi dari skrip yang dicatat menggunakan logger AWS Glue aplikasi saat pekerjaan sedang berjalan.

1. Untuk tugas lama, Anda juga dapat melihat log waktu nyata pada tampilan **Riwayat Tugas** dengan memilih **Log**. Tindakan ini membawa Anda ke CloudWatch konsol yang menampilkan semua aliran log driver, eksekutor, dan bilah kemajuan Spark untuk menjalankan pekerjaan tersebut.

**Untuk melihat log waktu nyata menggunakan dasbor CloudWatch konsol**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Log**.

1. Pilih grup log **glue/jobs/error/aws-/**.

1. Di kotak **Filter**, tempel ID eksekusi tugas.

   Anda dapat melihat log driver, log pelaksana, dan bilah kemajuan (jika menggunakan **Filter standar**).

# Pemantauan dengan metrik AWS Glue Observabilitas
<a name="monitor-observability"></a>

**catatan**  
AWS GlueMetrik observabilitas tersedia di AWS Glue versi 4.0 dan yang lebih baru.

 Gunakan metrik AWS Glue Observability untuk menghasilkan wawasan tentang apa yang terjadi di dalam pekerjaan Apache Spark Anda AWS Glue untuk meningkatkan triaging dan analisis masalah. Metrik observabilitas divisualisasikan melalui Amazon CloudWatch dasbor dan dapat digunakan untuk membantu melakukan analisis akar penyebab kesalahan dan untuk mendiagnosis kemacetan kinerja. Anda dapat mengurangi waktu yang dihabiskan masalah debugging dalam skala besar sehingga Anda dapat fokus pada penyelesaian masalah lebih cepat dan lebih efektif. 

 AWS GlueObservabilitas menyediakan Amazon CloudWatch metrik yang dikategorikan dalam empat kelompok berikut: 
+  **Keandalan (yaitu, Kelas Kesalahan)** — dengan mudah mengidentifikasi alasan kegagalan yang paling umum pada rentang waktu tertentu yang mungkin ingin Anda atasi. 
+  **Kinerja (yaitu, Skewness)** - mengidentifikasi hambatan kinerja dan menerapkan teknik penyetelan. Misalnya, ketika Anda mengalami penurunan kinerja karena kemiringan pekerjaan, Anda mungkin ingin mengaktifkan Eksekusi Kueri Adaptif Spark dan menyempurnakan ambang gabungan miring. 
+  **Throughput (yaitu, per source/sink throughput)** — memantau tren membaca dan menulis data. Anda juga dapat mengonfigurasi Amazon CloudWatch alarm untuk anomali. 
+  **Pemanfaatan Sumber Daya (yaitu, pekerja, memori dan pemanfaatan disk)** — secara efisien menemukan pekerjaan dengan pemanfaatan kapasitas rendah. Anda mungkin ingin mengaktifkan AWS Glue auto-scaling untuk pekerjaan tersebut. 

## Memulai dengan metrik AWS Glue Observability
<a name="monitor-observability-getting-started"></a>

**catatan**  
 Metrik baru diaktifkan secara default di AWS Glue Studio konsol. 

**Untuk mengonfigurasi metrik observabilitas di: AWS Glue Studio**

1. Masuk ke AWS Glue konsol dan pilih **pekerjaan ETL** dari menu konsol.

1. Pilih pekerjaan dengan mengklik nama pekerjaan di bagian **Pekerjaan Anda**.

1. Pilih tab **Detail tugas**.

1. Gulir ke bawah dan pilih **Advanced properties**, lalu **Job observability metrics**.  
![\[Tangkapan layar menunjukkan tab Rincian pekerjaan Properti lanjutan. Opsi metrik observabilitas Job disorot.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/job-details-observability-metrics.png)

**Untuk mengaktifkan metrik AWS Glue Observability menggunakan: AWS CLI**
+  Tambahkan ke `--default-arguments` peta kunci-nilai berikut dalam file JSON masukan: 

  ```
  --enable-observability-metrics, true
  ```

## Menggunakan AWS Glue observabilitas
<a name="monitor-observability-cloudwatch"></a>

 Karena metrik AWS Glue observabilitas disediakan Amazon CloudWatch, Anda dapat menggunakan Amazon CloudWatch konsol, SDK AWS CLI, atau API untuk menanyakan titik data metrik observabilitas. Lihat [Menggunakan Glue Observability untuk memantau pemanfaatan sumber daya guna mengurangi biaya](https://aws.amazon.com/blogs/big-data/enhance-monitoring-and-debugging-for-aws-glue-jobs-using-new-job-observability-metrics/) untuk contoh kasus penggunaan saat menggunakan metrik AWS Glue observabilitas. 

### Menggunakan AWS Glue observabilitas di konsol Amazon CloudWatch
<a name="monitor-observability-cloudwatch-console"></a>

**Untuk menanyakan dan memvisualisasikan metrik di konsol: Amazon CloudWatch**

1.  Buka Amazon CloudWatch konsol dan pilih **Semua metrik**. 

1.  Di bawah ruang nama khusus, pilih. **AWS Glue** 

1.  Pilih Metrik **Observabilitas Pekerjaan, Metrik Observabilitas Per Sumber, atau Metrik Observabilitas Per** Wastafel. 

1. Cari nama metrik tertentu, nama pekerjaan, ID jalankan pekerjaan, dan pilih.

1. Di bawah tab **Metrik grafik**, konfigurasikan statistik pilihan Anda, periode, dan opsi lainnya.  
![\[Tangkapan layar menunjukkan grafik Amazon CloudWatch konsol dan metrik.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/cloudwatch-console-metrics.png)

**Untuk menanyakan metrik Observabilitas menggunakan AWS CLI:**

1.  Buat file JSON definisi metrik dan ganti `your-Glue-job-name` dan `your-Glue-job-run-id` dengan milik Anda. 

   ```
   $ cat multiplequeries.json
   [
       {
           "Id": "avgWorkerUtil_0",
           "MetricStat": {
               "Metric": {
                   "Namespace": "Glue",
                   "MetricName": "glue.driver.workerUtilization",
                   "Dimensions": [
                       {
                           "Name": "JobName",
                           "Value": "<your-Glue-job-name-A>"
                       },
                       {
                           "Name": "JobRunId",
                           "Value": "<your-Glue-job-run-id-A>"
                       },
                       {
                           "Name": "Type",
                           "Value": "gauge"
                       },
                       {
                           "Name": "ObservabilityGroup",
                           "Value": "resource_utilization"
                       }
                   ]
               },
               "Period": 1800,
               "Stat": "Minimum",
               "Unit": "None"
           }
       },
       {
           "Id": "avgWorkerUtil_1",
           "MetricStat": {
               "Metric": {
                   "Namespace": "Glue",
                   "MetricName": "glue.driver.workerUtilization",
                   "Dimensions": [
                       {
                           "Name": "JobName",
                           "Value": "<your-Glue-job-name-B>"
                       },
                       {
                           "Name": "JobRunId",
                           "Value": "<your-Glue-job-run-id-B>"
                       },
                       {
                           "Name": "Type",
                           "Value": "gauge"
                       },
                       {
                           "Name": "ObservabilityGroup",
                           "Value": "resource_utilization"
                       }
                   ]
               },
               "Period": 1800,
               "Stat": "Minimum",
               "Unit": "None"
           }
       }
   ]
   ```

1.  Jalankan perintah `get-metric-data`: 

   ```
   $ aws cloudwatch get-metric-data --metric-data-queries file: //multiplequeries.json \
        --start-time '2023-10-28T18: 20' \
        --end-time '2023-10-28T19: 10'  \
        --region us-east-1
   {
       "MetricDataResults": [
           {
               "Id": "avgWorkerUtil_0",
               "Label": "<your-label-for-A>",
               "Timestamps": [
                   "2023-10-28T18:20:00+00:00"
               ],
               "Values": [
                   0.06718750000000001
               ],
               "StatusCode": "Complete"
           },
           {
               "Id": "avgWorkerUtil_1",
               "Label": "<your-label-for-B>",
               "Timestamps": [
                   "2023-10-28T18:50:00+00:00"
               ],
               "Values": [
                   0.5959183673469387
               ],
               "StatusCode": "Complete"
           }
       ],
       "Messages": []
   }
   ```

## Metrik observabilitas
<a name="monitor-observability-metrics-definitions"></a>

 AWS GlueProfil observabilitas dan mengirimkan metrik berikut ke Amazon CloudWatch setiap 30 detik, dan beberapa metrik ini dapat terlihat di Halaman Pemantauan AWS Glue Studio Job Runs. 


| Metrik | Deskripsi | Kategori | 
| --- | --- | --- | 
| lem.driver.skewness.stage |  Kategori Metrik: job\$1performance Spark stage eksekusi Skewness: metrik ini merupakan indikator berapa lama waktu durasi tugas maksimum dalam tahap tertentu dibandingkan dengan durasi tugas median pada tahap ini. Ini menangkap kemiringan eksekusi, yang mungkin disebabkan oleh kemiringan data input atau oleh transformasi (misalnya, gabungan miring). Nilai metrik ini jatuh ke dalam kisaran [0, tak terhingga [, di mana 0 berarti rasio waktu eksekusi tugas maksimum terhadap median, di antara semua tugas dalam tahap kurang dari faktor kemiringan tahap tertentu. Faktor kemiringan tahap default adalah `5` dan dapat ditimpa melalui spark conf: spark.metrics.conf.driver.source.glue.jobPerformance.SkewnessFactor Nilai kemiringan tahap 1 berarti rasio dua kali faktor kemiringan tahap.  Nilai kemiringan panggung diperbarui setiap 30 detik untuk mencerminkan kemiringan saat ini. Nilai pada akhir tahap mencerminkan kemiringan tahap akhir. Metrik tingkat tahap ini digunakan untuk menghitung metrik tingkat pekerjaan. `glue.driver.skewness.job` Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (job\$1performance) Statistik yang Valid: Rata-rata, Maksimum, Minimum, Persentil Unit: Jumlah  | job\$1kinerja | 
| lem.driver.skewness.job |  Kategori Metrik: job\$1performance  Job skewness adalah kemiringan tertimbang maksimum dari semua tahapan. Kemiringan panggung (lem.driver.skewness.stage) ditimbang dengan durasi panggung. Ini untuk menghindari kasus sudut ketika tahap yang sangat miring sebenarnya berjalan untuk waktu yang sangat singkat relatif terhadap tahap lain (dan dengan demikian kemiringannya tidak signifikan untuk kinerja pekerjaan secara keseluruhan dan tidak sepadan dengan upaya untuk mencoba mengatasi kemiringannya).  Metrik ini diperbarui setelah menyelesaikan setiap tahap, dan dengan demikian nilai terakhir mencerminkan kemiringan pekerjaan keseluruhan yang sebenarnya. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (job\$1performance) Statistik yang Valid: Rata-rata, Maksimum, Minimum, Persentil Unit: Jumlah  | job\$1kinerja | 
| lem.berhasil.semua |  Kategori Metrik: kesalahan Jumlah total pekerjaan yang berhasil berjalan, untuk melengkapi gambaran kategori kegagalan Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (count), dan ObservabilityGroup (error) Statistik yang Valid: SUM Unit: Jumlah  | kesalahan | 
| lem.error.all |  Kategori Metrik: kesalahan  Jumlah total kesalahan menjalankan pekerjaan, untuk melengkapi gambaran kategori kegagalan Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (count), dan ObservabilityGroup (error) Statistik yang Valid: SUM Unit: Jumlah  | kesalahan | 
| lem.error. [kategori kesalahan] |  Kategori Metrik: kesalahan  Ini sebenarnya adalah satu set metrik, yang diperbarui hanya ketika pekerjaan berjalan gagal. Kategorisasi kesalahan membantu dengan triaging dan debugging. Ketika pekerjaan berjalan gagal, kesalahan yang menyebabkan kegagalan dikategorikan dan metrik kategori kesalahan yang sesuai disetel ke 1. Ini membantu untuk melakukan analisis kegagalan dari waktu ke waktu, serta atas semua analisis kesalahan pekerjaan untuk mengidentifikasi kategori kegagalan yang paling umum untuk mulai mengatasinya. AWS Gluememiliki 28 kategori kesalahan, termasuk kategori kesalahan OUT\$1OF\$1MEMORY (driver dan eksekutor), PERMISSION, SYNTAX dan THROTTLING. Kategori kesalahan juga mencakup kategori kesalahan KOMPILASI, PELUNCURAN, dan TIMEOUT. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (count), dan ObservabilityGroup (error) Statistik yang Valid: SUM Unit: Jumlah  | kesalahan | 
| Glue.driver.workerUtilization |  Kategori Metrik: resource\$1utilization  Persentase pekerja yang dialokasikan yang benar-benar digunakan. Jika tidak bagus, penskalaan otomatis dapat membantu. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata, Maksimum, Minimum, Persentil Unit: Persentase  | resource\$1utilization | 
| lem.driver.memory.heap. [tersedia \$1 digunakan] |  Kategori Metrik: resource\$1utilization  Memori heap driver yang tersedia/digunakan selama pekerjaan dijalankan. Ini membantu untuk memahami tren penggunaan memori, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain men-debug kegagalan terkait memori. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Bita  | resource\$1utilization | 
| lem.driver.memory.heap.used.percentage |  Kategori Metrik: resource\$1utilization  Pengemudi menggunakan memori heap (%) selama pekerjaan dijalankan. Ini membantu untuk memahami tren penggunaan memori, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain men-debug kegagalan terkait memori. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| lem.driver.memory.non-heap. [tersedia \$1 digunakan] |  Kategori Metrik: resource\$1utilization  Pengemudi yang tersedia/menggunakan memori non-heap selama pekerjaan dijalankan. Ini membantu untuk memahami tren penggunaan memori, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain men-debug kegagalan terkait memori. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Bita  | resource\$1utilization | 
| lem.driver.memory.non-heap.used.percentage |  Kategori Metrik: resource\$1utilization  Pengemudi menggunakan memori non-heap (%) selama pekerjaan dijalankan. Ini membantu untuk memahami tren penggunaan memori, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain men-debug kegagalan terkait memori. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| lem.driver.memory.total. [tersedia \$1 digunakan] |  Kategori Metrik: resource\$1utilization  Pengemudi tersedia/menggunakan memori total selama pekerjaan dijalankan. Ini membantu untuk memahami tren penggunaan memori, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain men-debug kegagalan terkait memori. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Bita  | resource\$1utilization | 
| lem.driver.memory.total.used.percentage |  Kategori Metrik: resource\$1utilization  Pengemudi menggunakan (%) total memori selama menjalankan pekerjaan. Ini membantu untuk memahami tren penggunaan memori, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain men-debug kegagalan terkait memori. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| Lek.all.memory.heap. [tersedia \$1 digunakan] |  Kategori Metrik: resource\$1utilization  Memori tumpukan eksekutor. available/used SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Bita  | resource\$1utilization | 
| Glue.all.memory.heap.used.percentage |  Kategori Metrik: resource\$1utilization  Memori heap (%) yang digunakan para eksekutor. SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| Lek.all.memory.non-heap. [tersedia \$1 digunakan] |  Kategori Metrik: resource\$1utilization  Memori non-heap eksekutor available/used . SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Bita  | resource\$1utilization | 
| Glue.all.memory.non-heap.used.percentage |  Kategori Metrik: resource\$1utilization  Eksekutor menggunakan (%) memori non-heap. SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| Lek.all.memory.total. [tersedia \$1 digunakan] |  Kategori Metrik: resource\$1utilization  Memori total eksekutor. available/used SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Bita  | resource\$1utilization | 
| Glue.all.memory.total.used.percentage |  Kategori Metrik: resource\$1utilization  Eksekutor menggunakan (%) total memori. SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| lem.driver.disk. [tersedia\$1GB \$1 digunakan\$1GB] |  Kategori Metrik: resource\$1utilization  Ruang available/used disk pengemudi selama pekerjaan dijalankan. Ini membantu untuk memahami tren penggunaan disk, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain debugging tidak cukup kegagalan terkait ruang disk. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Satuan: Gigabytes  | resource\$1utilization | 
| lem.driver.disk.used.percentage] |  Kategori Metrik: resource\$1utilization  Ruang available/used disk pengemudi selama pekerjaan dijalankan. Ini membantu untuk memahami tren penggunaan disk, terutama dari waktu ke waktu, yang dapat membantu menghindari potensi kegagalan, selain debugging tidak cukup kegagalan terkait ruang disk. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| Lek.all.disk. [tersedia\$1GB \$1 digunakan\$1GB] |  Kategori Metrik: resource\$1utilization  Ruang disk para eksekutor. available/used SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Satuan: Gigabytes  | resource\$1utilization | 
| Glue.all.disk.used.percentage |  Kategori Metrik: resource\$1utilization  Ruang disk available/used/used (%) pelaksana. SEMUA berarti semua pelaksana. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), dan ObservabilityGroup (resource\$1utilization) Statistik yang Valid: Rata-rata Unit: Persentase  | resource\$1utilization | 
| Lek.driver.bytesRead |  Kategori Metrik: throughput  Jumlah byte yang dibaca per sumber input dalam pekerjaan ini dijalankan, serta untuk SEMUA sumber. Ini membantu memahami volume data dan perubahannya dari waktu ke waktu, yang membantu mengatasi masalah seperti kemiringan data. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), (resource\$1utilization), dan Source ObservabilityGroup (lokasi data sumber) Statistik yang Valid: Rata-rata Unit: Bita  | throughput | 
| lem.driver. [RecordsRead \$1 FilesRead]  |  Kategori Metrik: throughput  Jumlah records/files pembacaan per sumber input dalam pekerjaan ini dijalankan, serta untuk SEMUA sumber. Ini membantu memahami volume data dan perubahannya dari waktu ke waktu, yang membantu mengatasi masalah seperti kemiringan data. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), (resource\$1utilization), dan Source ObservabilityGroup (lokasi data sumber) Statistik yang Valid: Rata-rata Unit: Jumlah  | throughput | 
| lem.driver.partitionsRead  |  Kategori Metrik: throughput  Jumlah partisi yang dibaca per sumber input Amazon S3 dalam pekerjaan ini dijalankan, serta untuk SEMUA sumber. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), (resource\$1utilization), dan Source ObservabilityGroup (lokasi data sumber) Statistik yang Valid: Rata-rata Unit: Jumlah  | throughput | 
| Lek.driver.bytesWrittten |  Kategori Metrik: throughput  Jumlah byte yang ditulis per output tenggelam dalam pekerjaan ini, serta untuk SEMUA sink. Ini membantu memahami volume data dan bagaimana perkembangannya dari waktu ke waktu, yang membantu mengatasi masalah seperti kemiringan pemrosesan. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), ObservabilityGroup (resource\$1utilization), dan Sink (lokasi data sink) Statistik yang Valid: Rata-rata Unit: Bita  | throughput | 
| lem.driver. [RecordsWritten \$1 FilesWritten] |  Kategori Metrik: throughput  Nnumber records/files tertulis per output tenggelam dalam pekerjaan ini, serta untuk SEMUA sink. Ini membantu memahami volume data dan bagaimana perkembangannya dari waktu ke waktu, yang membantu mengatasi masalah seperti kemiringan pemrosesan. Dimensi yang valid: JobName (nama AWS Glue Job), JobRunId ( JobRun ID. atau ALL), Type (gauge), ObservabilityGroup (resource\$1utilization), dan Sink (lokasi data sink) Statistik yang Valid: Rata-rata Unit: Jumlah  | throughput | 

## Kategori kesalahan
<a name="monitor-observability-error-categories"></a>


| Kategori kesalahan | Deskripsi | 
| --- | --- | 
| COMPILATION\$1ERROR | Kesalahan muncul selama kompilasi kode Scala. | 
| CONNECTION\$1ERROR | Kesalahan muncul saat menghubungkan ke layanan service/remote host/database, dll. | 
| DISK\$1NO\$1SPACE\$1ERROR |  Kesalahan muncul ketika tidak ada ruang tersisa di disk pada driver/executor.  | 
| OUT\$1OF\$1MEMORY\$1ERROR | Kesalahan muncul ketika tidak ada ruang yang tersisa di memori pada driver/executor. | 
| IMPORT\$1ERROR | Kesalahan muncul saat dependensi impor. | 
| INVALID\$1ARGUMENT\$1ERROR | Kesalahan muncul ketika argumen input tidak valid/ilegal. | 
| PERMISSION\$1ERROR | Kesalahan muncul ketika tidak memiliki izin untuk layanan, data, dll.  | 
| RESOURCE\$1NOT\$1FOUND\$1ERROR |  Kesalahan muncul ketika data, lokasi, dll tidak keluar.   | 
| QUERY\$1ERROR | Kesalahan muncul dari eksekusi kueri Spark SQL.  | 
| SYNTAX\$1ERROR | Kesalahan muncul ketika ada kesalahan sintaks dalam skrip.  | 
| THROTTLING\$1ERROR | Kesalahan muncul saat menekan batasan konkurensi layanan atau mengeksekusi batas kuota layanan. | 
| DATA\$1LAKE\$1FRAMEWORK\$1ERROR | Kesalahan muncul dari kerangka data lake yang AWS Glue didukung asli seperti Hudi, Iceberg, dll. | 
| UNSUPPORTED\$1OPERATION\$1ERROR | Kesalahan muncul saat melakukan operasi yang tidak didukung. | 
| RESOURCES\$1ALREADY\$1EXISTS\$1ERROR | Kesalahan muncul ketika sumber daya yang akan dibuat atau ditambahkan sudah ada. | 
| GLUE\$1INTERNAL\$1SERVICE\$1ERROR | Kesalahan muncul ketika ada masalah layanan AWS Glue internal.  | 
| GLUE\$1OPERATION\$1TIMEOUT\$1ERROR | Kesalahan muncul ketika AWS Glue operasi adalah batas waktu. | 
| GLUE\$1VALIDATION\$1ERROR | Kesalahan muncul ketika nilai yang diperlukan tidak dapat divalidasi untuk AWS Glue pekerjaan. | 
| GLUE\$1JOB\$1BOOKMARK\$1VERSION\$1MISMATCH\$1ERROR | Kesalahan muncul ketika pekerjaan yang sama menunjukkan bucket sumber yang sama dan menulis ke same/different tujuan secara bersamaan (konkurensi> 1) | 
| LAUNCH\$1ERROR | Kesalahan muncul selama fase peluncuran AWS Glue pekerjaan. | 
| DYNAMODB\$1ERROR | Kesalahan umum muncul dari Amazon DynamoDB layanan. | 
| GLUE\$1ERROR | Kesalahan Generik muncul dari AWS Glue layanan. | 
| LAKEFORMATION\$1ERROR | Kesalahan Generik muncul dari AWS Lake Formation layanan. | 
| REDSHIFT\$1ERROR | Kesalahan Generik muncul dari Amazon Redshift layanan. | 
| S3\$1KESALAHAN | Kesalahan Generik muncul dari layanan Amazon S3. | 
| SYSTEM\$1EXIT\$1ERROR | Kesalahan keluar sistem generik. | 
| TIMEOUT\$1ERROR | Kesalahan umum muncul ketika pekerjaan gagal karena waktu operasi habis. | 
| UNCLASSIFIED\$1SPARK\$1ERROR | Kesalahan umum muncul dari Spark. | 
| UNCLASSIFIED\$1ERROR | Kategori kesalahan default. | 

## Batasan
<a name="monitoring-observability-limitations"></a>

**catatan**  
`glueContext`harus diinisialisasi untuk mempublikasikan metrik.

 Di Dimensi Sumber, nilainya adalah jalur Amazon S3 atau nama tabel, tergantung pada jenis sumbernya. Selain itu, jika sumbernya adalah JDBC dan opsi kueri digunakan, string kueri diatur dalam dimensi sumber. Jika nilainya lebih panjang dari 500 karakter, itu dipangkas dalam 500 karakter.Berikut ini adalah batasan dalam nilai: 
+ Karakter non-ASCII akan dihapus.
+ <non-ASCII input>Jika nama sumber tidak mengandung karakter ASCII, itu dikonversi ke.

### Keterbatasan dan pertimbangan untuk metrik throughput
<a name="monitoring-observability-considerations"></a>
+  DataFrame dan DataFrame berbasis DynamicFrame (misalnya JDBC, membaca dari parket di Amazon S3) didukung, namun, berbasis RDD DynamicFrame (misalnya membaca csv, json di Amazon S3, dll.) tidak didukung. Secara teknis, semua membaca dan menulis yang terlihat di Spark UI didukung. 
+  `recordsRead`Metrik akan dipancarkan jika sumber data adalah tabel katalog dan formatnya adalah JSON, CSV, teks, atau Iceberg. 
+  `glue.driver.throughput.recordsWritten`,`glue.driver.throughput.bytesWritten`, dan `glue.driver.throughput.filesWritten` metrik tidak tersedia dalam tabel JDBC dan Iceberg. 
+  Metrik mungkin tertunda. Jika pekerjaan selesai dalam waktu sekitar satu menit, mungkin tidak ada metrik throughput di Metrik. Amazon CloudWatch 

# Pemantauan dan debugging Job
<a name="monitor-profile-glue-job-cloudwatch-metrics"></a>

Anda dapat mengumpulkan metrik tentang AWS Glue pekerjaan dan memvisualisasikannya di CloudWatch konsol AWS Glue Amazon dan Amazon untuk mengidentifikasi dan memperbaiki masalah. Membuat profil tugas AWS Glue memerlukan langkah-langkah berikut:

1.  Aktifkan metrik: 

   1.  Mengaktifkan opsi **Metrik Tugas** dalam definisi tugas. Anda dapat mengaktifkan pemrofilan di konsol AWS Glue atau sebagai sebuah parameter untuk tugas. Untuk informasi selengkapnya, lihat [Mendefinisikan properti pekerjaan untuk pekerjaan Spark](add-job.md#create-job) atau [Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue](aws-glue-programming-etl-glue-arguments.md). 

   1.  Aktifkan opsi **metrik AWS Glue Observabilitas** dalam definisi pekerjaan. Anda dapat mengaktifkan Observabilitas di AWS Glue konsol atau sebagai parameter untuk pekerjaan. Untuk mengetahui informasi selengkapnya, lihat [Pemantauan dengan metrik AWS Glue Observabilitas](monitor-observability.md). 

1. Mengonfirmasi bahwa skrip tugas menginisialisasi sebuah `GlueContext`. Sebagai contoh, potongan skrip berikut menginisialisasi `GlueContext` dan menunjukkan di mana kode yang diprofilkan ditempatkan dalam skrip tersebut. Format umum ini digunakan dalam skenario debugging yang mengikuti. 

   ```
   import sys
   from awsglue.transforms import *
   from awsglue.utils import getResolvedOptions
   from pyspark.context import SparkContext
   from awsglue.context import GlueContext
   from awsglue.job import Job
   import time
   
   ## @params: [JOB_NAME]
   args = getResolvedOptions(sys.argv, ['JOB_NAME'])
   
   sc = SparkContext()
   glueContext = GlueContext(sc)
   spark = glueContext.spark_session
   job = Job(glueContext)
   job.init(args['JOB_NAME'], args)
   
   ...
   ...
   code-to-profile
   ...
   ...
   
   
   job.commit()
   ```

1. Jalankan tugas.

1. Visualisasikan metrik:

   1. Visualisasikan metrik pekerjaan di AWS Glue konsol dan identifikasi metrik abnormal untuk driver atau pelaksana.

   1. Periksa metrik observabilitas di halaman pemantauan Job run, halaman detail menjalankan pekerjaan, atau di Amazon. CloudWatch Untuk informasi selengkapnya, lihat [Pemantauan dengan metrik AWS Glue Observabilitas](monitor-observability.md).

1. Persempit akar masalah dengan menggunakan metrik yang diidentifikasi.

1. Opsional, mengonfirmasi akar masalah menggunakan pengaliran log dari driver atau pelaksana tugas yang diidentifikasi.

 **Gunakan kasus untuk AWS Glue metrik observabilitas** 
+  [Debugging pengecualian OOM dan kelainan pekerjaan](monitor-profile-debug-oom-abnormalities.md) 
+  [Mendebug tahapan yang menuntut dan tugas yang menyimpang](monitor-profile-debug-straggler.md) 
+  [Memantau kemajuan beberapa pekerjaan](monitor-debug-multiple.md) 
+  [Pemantauan perencanaan kapasitas DPU](monitor-debug-capacity.md) 
+  [Menggunakan AWS Glue Observabilitas untuk memantau pemanfaatan sumber daya untuk mengurangi biaya](https://aws.amazon.com/blogs/big-data/enhance-monitoring-and-debugging-for-aws-glue-jobs-using-new-job-observability-metrics) 

# Debugging pengecualian OOM dan kelainan pekerjaan
<a name="monitor-profile-debug-oom-abnormalities"></a>

Anda dapat men-debug pengecualian out-of-memory (OOM) dan kelainan pekerjaan di. AWS Glue Bagian berikut menjelaskan skenario untuk debugging out-of-memory pengecualian driver Apache Spark atau pelaksana Spark. 
+ [Mendebug pengecualian OOM driver](#monitor-profile-debug-oom-driver)
+ [Mendebug pengecualian OOM eksekutor](#monitor-profile-debug-oom-executor)

## Mendebug pengecualian OOM driver
<a name="monitor-profile-debug-oom-driver"></a>

Dalam skenario ini, sebuah tugas Spark membaca sejumlah besar file dalam ukuran kecil dari Amazon Simple Storage Service (Amazon S3). Ia mengkonversi file tersebut ke format Apache Parquet dan kemudian menulisnya ke Amazon S3. Driver Spark sedang kehabisan memori. Data input Amazon S3 memiliki lebih dari 1 juta file dalam partisi Amazon S3 yang berbeda. 

Kode profilannya adalah sebagai berikut:

```
data = spark.read.format("json").option("inferSchema", False).load("s3://input_path")
data.write.format("parquet").save(output_path)
```

### Visualisasikan metrik yang diprofilkan di konsol AWS Glue
<a name="monitor-debug-oom-visualize"></a>

Grafik berikut menunjukkan penggunaan memori dalam satuan persentase untuk driver dan pelaksana. Penggunaan ini diplot sebagai satu titik data yang dirata-ratakan atas nilai-nilai yang dilaporkan di menit terakhir. Anda dapat melihat di profil memori dari tugas bahwa [memori driver](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.jvm.heap.usage) melewati ambang batas aman penggunaan 50 persen dengan cepat. Di sisi lain, [penggunaan memori rata-rata](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage) di semua pelaksana masih kurang dari 4 persen. Hal ini jelas menunjukkan kelainan yang terjadi pada pelaksana eksekusi driver dalam tugas Spark ini. 

![\[Penggunaan memori dalam satuan persentase untuk driver dan pelaksana.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-memoryprofile.png)


Eksekusi tugas segera gagal, dan kesalahan berikut muncul di tab **Riwayat** pada Konsol AWS Glue: Perintah Gagal dengan Kode Keluar 1. String kesalahan ini berarti bahwa tugas gagal karena adanya sebuah kesalahan sistemik—yang dalam hal ini adalah bahwa driver kehabisan memori.

![\[Pesan kesalahan yang ditampilkan pada konsol AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-errorstring.png)


Di konsol, pilih tautan **Kesalahan log** pada tab **Sejarah** untuk mengonfirmasi temuan tentang driver OOM dari CloudWatch Log. Cari "**Error**" di log kesalahan tugas untuk mengonfirmasi bahwa hal itu memang pengecualian OOM yang membuat tugas gagal:

```
# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="kill -9 %p"
# Executing /bin/sh -c "kill -9 12039"...
```

Pada tab **Riwayat** untuk tugas, pilih **Log**. Anda dapat menemukan jejak eksekusi driver berikut di CloudWatch Log di awal pekerjaan. Driver Spark mencoba untuk mencantumkan semua file di semua direktori, membangun sebuah `InMemoryFileIndex`, dan meluncurkan satu tugas setiap file. Hal ini pada gilirannya akan mengakibatkan driver Spark harus mempertahankan sejumlah besar status di memori untuk melacak semua tugas. Ia meng-cache daftar lengkap dari sejumlah besar file untuk indeks dalam memori, yang mengakibatkan driver mengalami OOM.

### Perbaiki pemrosesan beberapa file menggunakan pengelompokan
<a name="monitor-debug-oom-fix"></a>

Anda dapat memperbaiki pemrosesan beberapa file dengan menggunakan fitur *pengelompokan dalam grup* di AWS Glue. Pengelompokan dalam grup secara otomatis diaktifkan ketika Anda menggunakan bingkai dinamis dan ketika set data masukan memiliki sejumlah besar file (lebih dari 50.000). Pengelompokan dalam grup memungkinkan Anda untuk menggabungkan beberapa file bersama-sama ke dalam sebuah grup, dan memungkinkan tugas untuk memproses seluruh grup tersebut, alih-alih satu file. Akibatnya, driver Spark menyimpan jauh lebih sedikit status di memori untuk melacak lebih sedikit tugas. Untuk informasi lebih lanjut tentang pengaktifan pengelompokan data dalam grup secara manual, lihat [Membaca file input dalam kelompok yang lebih besar](grouping-input-files.md).

Untuk memeriksa profil memori tugas AWS Glue, lakukan pemrofilan pada kode berikut dengan pengelompokan grup diaktifkan:

```
df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://input_path"], "recurse":True, 'groupFiles': 'inPartition'}, format="json")
datasink = glueContext.write_dynamic_frame.from_options(frame = df, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet", transformation_ctx = "datasink")
```

Anda dapat memantau profil memori dan pergerakan data ETL di profil tugas AWS Glue.

Driver berjalan di bawah ambang batas penggunaan memori 50 persen di sepanjang durasi tugas AWS Glue. Pelaksana mengalirkan data dari Amazon S3, memprosesnya, dan menuliskan data tersebut ke Amazon S3. Akibatnya, mereka menggunakan memori kurang dari 5 persen pada setiap titik waktu.

![\[Profil memori yang menunjukkan masalah tersebut telah diperbaiki.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-memoryprofile-fixed.png)


Profil pergerakan data di bawah ini menunjukkan jumlah byte Amazon S3 yang [di-baca](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes) dan [di-tulis](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes) pada menit terakhir oleh semua pelaksana saat tugas berlangsung. Keduanya mengikuti pola yang sama karena data dialirkan di semua pelaksana. Tugas tersebut menyelesaikan proses satu juta file dalam waktu kurang dari tiga jam.

![\[Profil pergerakan data yang menunjukkan masalah tersebut telah diperbaiki.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-etlmovement.png)


## Mendebug pengecualian OOM eksekutor
<a name="monitor-profile-debug-oom-executor"></a>

Dalam skenario ini, Anda dapat belajar bagaimana melakukan debug pada pengecualian OOM yang dapat terjadi dalam pelaksana Apache Spark. Kode berikut menggunakan pembaca Spark MySQL untuk membaca tabel besar yang mempunyai sekitar 34 juta baris ke dataframe Spark. Ia kemudian tulis tabel tersebut ke Amazon S3 dalam format Parquet. Anda dapat memberikan properti koneksi dan menggunakan konfigurasi Spark default untuk membaca tabel tersebut.

```
val connectionProperties = new Properties()
connectionProperties.put("user", user)
connectionProperties.put("password", password)
connectionProperties.put("Driver", "com.mysql.jdbc.Driver")
val sparkSession = glueContext.sparkSession
val dfSpark = sparkSession.read.jdbc(url, tableName, connectionProperties)
dfSpark.write.format("parquet").save(output_path)
```

### Visualisasikan metrik yang diprofilkan di konsol AWS Glue
<a name="monitor-debug-oom-visualize-2"></a>

Jika kemiringan grafik penggunaan memori positif dan melewati 50 persen, maka jika tugas gagal sebelum metrik berikutnya dipancarkan, maka kelelahan memori menjadi kandidat yang tepat sebagai penyebabnya. Grafik berikut menunjukkan bahwa dalam satu menit eksekusi, [penggunaan memori rata-rata](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage) di semua pelaksana melonjak dengan cepat di atas 50 persen. Penggunaan mencapai hingga 92 persen dan kontainer yang menjalankan pelaksana dihentikan oleh Apache Hadoop YARN. 

![\[Penggunaan memori rata-rata di seluruh pelaksana.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-2-memoryprofile.png)


Seperti yang ditunjukkan pada grafik berikut, selalu ada satu [pelaksana tunggal](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberAllExecutors) yang berjalan sampai tugas gagal. Hal ini karena pelaksana baru diluncurkan untuk menggantikan pelaksana yang dihentikan. Pembacaan sumber data JDBC tidak diparalelisasi secara default karena akan membutuhkan pemartisian tabel pada kolom dan membuka beberapa koneksi. Akibatnya, hanya satu pelaksana yang membaca dalam tabel yang lengkap secara berurutan.

![\[Eksekusi tugas menunjukkan satu pelaksana tunggal berjalan sampai tugas gagal.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-2-execution.png)


Sebagaimana ditunjukkan dalam grafik berikut, Spark mencoba untuk meluncurkan tugas baru empat kali sebelum gagal tugas. Anda dapat melihat [profil memori](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.used) dari tiga pelaksana. Setiap pelaksana dengan cepat menggunakan semua memorinya. Pelaksana keempat kehabisan memori, dan tugas gagal. Akibatnya, metriknya tidak langsung dilaporkan.

![\[Profil memori dari pelaksana.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-2-exec-memprofile.png)


Anda dapat mengonfirmasi dari string kesalahan pada konsol AWS Glue bahwa tugas gagal karena pengecualian OOM, seperti yang ditunjukkan dalam gambar berikut.

![\[Pesan kesalahan yang ditampilkan pada konsol AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-2-errorstring.png)


**Log keluaran Job:** Untuk mengonfirmasi lebih lanjut temuan Anda tentang pengecualian OOM eksekutor, lihat CloudWatch Log. Saat Anda mencari **Error**, Anda menemukan empat pelaksana yang dihentikan di sekitar jendela waktu yang sama seperti yang ditunjukkan pada dasbor metrik. Semua diakhiri oleh YARN karena mereka melebihi batas memori mereka.

Pelaksana 1

```
18/06/13 16:54:29 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:54:29 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:54:29 ERROR YarnClusterScheduler: Lost executor 1 on ip-10-1-2-175.ec2.internal: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:54:29 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, ip-10-1-2-175.ec2.internal, executor 1): ExecutorLostFailure (executor 1 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

Pelaksana 2

```
18/06/13 16:55:35 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:55:35 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:55:35 ERROR YarnClusterScheduler: Lost executor 2 on ip-10-1-2-16.ec2.internal: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:55:35 WARN TaskSetManager: Lost task 0.1 in stage 0.0 (TID 1, ip-10-1-2-16.ec2.internal, executor 2): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

Pelaksana 3

```
18/06/13 16:56:37 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:56:37 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:56:37 ERROR YarnClusterScheduler: Lost executor 3 on ip-10-1-2-189.ec2.internal: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:56:37 WARN TaskSetManager: Lost task 0.2 in stage 0.0 (TID 2, ip-10-1-2-189.ec2.internal, executor 3): ExecutorLostFailure (executor 3 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

Pelaksana 4

```
18/06/13 16:57:18 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:57:18 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:57:18 ERROR YarnClusterScheduler: Lost executor 4 on ip-10-1-2-96.ec2.internal: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:57:18 WARN TaskSetManager: Lost task 0.3 in stage 0.0 (TID 3, ip-10-1-2-96.ec2.internal, executor 4): ExecutorLostFailure (executor 4 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

### Perbaiki pengaturan ukuran ambil menggunakan frame AWS Glue dinamis
<a name="monitor-debug-oom-fix-2"></a>

Pelaksana kehabisan memori saat membaca tabel JDBC karena konfigurasi default untuk ukuran pengambilan JDBC Spark adalah nol. Ini berarti bahwa driver JDBC pada pelaksana Spark mencoba untuk mengambil 34 juta baris dari basis data bersama-sama dan meng-cache mereka, meskipun pengaliran Spark melalui baris-baris tersebut, sekali dalam satu waktu. Dengan Spark, Anda dapat menghindari skenario ini dengan menetapkan parameter ukuran pengambilan ke nilai default non-nol.

Anda juga dapat memperbaiki masalah ini dengan menggunakan bingkai dinamis AWS Glue sebagai gantinya. Secara default, bingkai dinamis menggunakan ukuran pengambilan sebesar 1.000 baris yang merupakan nilai yang biasanya cukup. Akibatnya, pelaksana tidak mengambil lebih dari 7 persen dari total memorinya. Tugas AWS Glue selesai dalam waktu kurang dari dua menit dengan hanya satu pelaksana tunggal. Selain menggunakan bingkai dinamis AWS Glue merupakan pendekatan yang direkomendasikan, ia juga memungkinkan kita untuk mengatur ukuran pengambilan dengan menggunakan properti `fetchsize` Apache Spark. Lihat [Spark SQL, DataFrames dan Panduan Datasets](https://spark.apache.org/docs/2.2.0/sql-programming-guide.html#jdbc-to-other-databases).

```
val (url, database, tableName) = {
 ("jdbc_url", "db_name", "table_name")
 } 
val source = glueContext.getSource(format, sourceJson)
val df = source.getDynamicFrame
glueContext.write_dynamic_frame.from_options(frame = df, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet", transformation_ctx = "datasink")
```

**Metrik profilan normal:** [Memori pelaksana](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage) dengan bingkai dinamis AWS Glue tidak pernah melebihi ambang batas aman, seperti yang ditunjukkan pada gambar berikut. Ia mengalirkan dalam baris-baris dari basis data dan meng-cache hanya 1.000 baris dalam driver JDBC pada setiap titik waktu. Pengecualian kehabisan memori tidak terjadi.

![\[Konsol AWS Glue menunjukkan memori pelaksana di bawah ambang batas yang aman.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-oom-2-memoryprofile-fixed.png)


# Mendebug tahapan yang menuntut dan tugas yang menyimpang
<a name="monitor-profile-debug-straggler"></a>

Anda dapat menggunakan pemrofilan tugas AWS Glue untuk mengidentifikasi tahapan yang menuntut dan tugas dengan performa buruk dalam tugas extract, transform, and load (ETL) Anda. Sebuah tugas dengan performa buruk memakan waktu lebih lama dari tugas-tugas lainnya dalam tahap sebuah tugas AWS Glue. Akibatnya, tahapan tersebut membutuhkan waktu lebih lama untuk selesai, yang juga menunda total waktu eksekusi tugas.

## Menggabungkan file input kecil menjadi file output yang lebih besar
<a name="monitor-profile-debug-straggler-scenario-1"></a>

Sebuah tugas dengan performa buruk dapat terjadi ketika ada distribusi pekerjaan yang tidak seragam di seluruh tugas yang berbeda, atau adanya data condong yang mengakibatkan satu tugas memproses lebih banyak data.

Anda dapat melakukan pemrofilan pada kode berikut—pola umum di Apache Spark—untuk menggabungkan sejumlah besar file kecil ke dalam file output yang lebih besar. Untuk contoh ini, set data inputnya adalah file JSON Gzip terkompresi sebesar 32 GB. Set data output mempunyai file JSON tidak terkompresi kira-kira sebesar 190 GB. 

Kode profilannya adalah sebagai berikut:

```
datasource0 = spark.read.format("json").load("s3://input_path")
df = datasource0.coalesce(1)
df.write.format("json").save(output_path)
```

### Visualisasikan metrik yang diprofilkan di konsol AWS Glue
<a name="monitor-debug-straggler-visualize"></a>

Anda dapat melakukan pemrofilan pada tugas Anda untuk memeriksa empat rangkaian metrik yang berbeda:
+ Pergerakan data ETL
+ Data yang diacak di seluruh pelaksana
+ Eksekusi tugas
+ Profil memori

**Pergerakan data ETL**: Dalam profil **Pergerakan data ETL**, byte [di-baca](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes) cukup cepat oleh semua pelaksana di tahap pertama yang selesai dalam waktu enam menit pertama. Namun, total waktu eksekusi tugas sekitar satu jam, sebagian besar terdiri dari eksekusi [tulis](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes) data.

![\[Grafik yang menunjukkan profil Pergerakan Data ETL.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-1.png)


**Data yang diacak di seluruh pelaksana:** Jumlah byte yang [di-baca](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleLocalBytesRead) dan [di-tulis](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleBytesWritten) selama pengacakan juga menunjukkan lonjakan sebelum Tahap 2 berakhir, seperti yang ditunjukkan oleh metrik **Eksekusi Tugas** dan **Pengacakan Data**. Setelah pengacakan data dilakukan di semua pelaksana, baca dan tulis melanjutkan dari pelaksana nomor 3 saja.

![\[Metrik untuk data yang diacak di seluruh pelaksana.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-2.png)


**Eksekusi Tugas:** Seperti ditunjukkan pada grafik di bawah ini, semua pelaksana lainnya menganggur dan akhirnya dilepaskan pada waktu 10:09. Pada saat itu, jumlah total pelaksana menurun menjadi hanya satu saja. Hal ini jelas menunjukkan bahwa pelaksana nomor 3 terdiri dari tugas dengan performa buruk yang mengambil waktu eksekusi paling lama dan memberikan kontribusi untuk sebagian besar waktu eksekusi tugas.

![\[Metrik eksekusi untuk pelaksana aktif.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-3.png)


**Profil memori:** Setelah dua tahap pertama, hanya [pelaksana nomor 3](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.jvm.heap.used) yang secara aktif menggunakan memori untuk memproses data. Pelaksana yang tersisa hanya menganggur atau telah dilepaskan tak lama setelah dua tahap pertama selesai. 

![\[Metrik untuk profil memori setelah dua tahapan pertama.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-4.png)


### Perbaiki pelaksana yang tersesat menggunakan pengelompokan
<a name="monitor-debug-straggler-fix"></a>

Anda dapat menghindari terjadinya pelaksana dengan performa buruk dengan menggunakan fitur *pengelompokan dalam grup* di AWS Glue. Gunakan pengelompokan dalam grup untuk mendistribusikan data secara seragam di semua pelaksana dan menyatukan file-file ke dalam file yang lebih besar dengan menggunakan semua pelaksana yang tersedia pada klaster. Untuk informasi selengkapnya, lihat [Membaca file input dalam kelompok yang lebih besar](grouping-input-files.md).

Untuk memeriksa pergerakan data ETL di tugas AWS Glue, lakukan pemrofilan pada kode berikut dengan pengelompokan grup yang diaktifkan:

```
df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://input_path"], "recurse":True, 'groupFiles': 'inPartition'}, format="json")
datasink = glueContext.write_dynamic_frame.from_options(frame = df, connection_type = "s3", connection_options = {"path": output_path}, format = "json", transformation_ctx = "datasink4")
```

**Pergerakan data ETL:** Data tulis sekarang dialirkan secara paralel dengan data baca di sepanjang waktu eksekusi tugas. Akibatnya, tugas selesai dalam delapan menit—jauh lebih cepat dari sebelumnya.

![\[Pergerakan data ETL yang menunjukkan masalah tersebut telah diperbaiki.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-5.png)


**Data yang diacak di seluruh pelaksana:** Karena file input digabungkan selama baca menggunakan fitur pengelompokan dalam grup, tidak ada pengacakan data yang mahal setelah pembacaan data.

![\[Metrik pengacakan data yang menunjukkan masalah telah diperbaiki.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-6.png)


**Eksekusi tugas:** Metrik eksekusi tugas menunjukkan bahwa jumlah pelaksana aktif yang menjalankan dan memproses data masih tetap cukup konstan. Tidak ada performa buruk yang terjadi dalam tugas itu. Semua pelaksana aktif dan tidak dilepaskan sampai tugas selesai. Karena tidak ada pengacakan menengah pada data di seluruh pelaksana, maka hanya ada satu tahap dalam tugas tersebut.

![\[Metrik untuk widget Eksekusi Tugas menunjukkan bahwa tidak ada perkerjaan dengan performa buruk dalam tugas tersebut.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-7.png)


**Profil memori:** Metrik menunjukkan [konsumsi memori aktif](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.jvm.heap.used) di semua pelaksana—mengonfirmasi kembali bahwa ada aktivitas di semua pelaksana. Karena data dialirkan dan ditulis secara paralel, maka total jejak memori dari semua pelaksana kira-kira seragam dan jauh di bawah ambang batas aman untuk semua pelaksana.

![\[Metrik profil memori menunjukkan konsumsi memori aktif di semua pelaksana.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-straggler-8.png)


# Memantau kemajuan beberapa pekerjaan
<a name="monitor-debug-multiple"></a>

Anda dapat membuat profil beberapa AWS Glue pekerjaan bersama-sama dan memantau aliran data di antara mereka. Ini adalah sebuah pola alur kerja yang umum, dan memerlukan pemantauan untuk kemajuan tugas individu, backlog pemrosesan data, pemrosesan ulang data, dan bookmark tugas.

**Topics**
+ [Kode diprofilkan](#monitor-debug-multiple-profile)
+ [Visualisasikan metrik yang diprofilkan di konsol AWS Glue](#monitor-debug-multiple-visualize)
+ [Perbaiki pemrosesan file](#monitor-debug-multiple-fix)

## Kode diprofilkan
<a name="monitor-debug-multiple-profile"></a>

Dalam alur kerja ini, Anda memiliki dua tugas: Tugas Input dan Tugas Output. Tugas Input dijadwalkan untuk berjalan setiap 30 menit dengan menggunakan pemicu periodik. Tugas Output dijadwalkan untuk berjalan setelah setiap eksekusi Tugas Input yang berhasil. Tugas-tugas terjadwal ini dikendalikan dengan menggunakan pemicu tugas.

![\[Tangkapan layar konsol yang menunjukkan pemicu tugas yang mengendalikan penjadwalan tugas Input dan Output.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-1.png)


**Tugas Input**: Tugas ini membaca data dari lokasi Amazon Simple Storage Service (Amazon S3), mengubahnya menggunakan `ApplyMapping`, dan menuliskannya ke lokasi Amazon S3 yang bertahap. Kode berikut adalah kode profilan untuk tugas Input:

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": ["s3://input_path"], "useS3ListImplementation":True,"recurse":True}, format="json")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [map_spec])
datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": staging_path, "compression": "gzip"}, format = "json")
```

**Tugas Output**: Tugas ini membaca output dari tugas Input dari lokasi pentahapan di Amazon S3, melakukan transformasi lagi padanya, dan menuliskannya ke tujuan:

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [staging_path], "useS3ListImplementation":True,"recurse":True}, format="json")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [map_spec])
datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "json")
```

## Visualisasikan metrik yang diprofilkan di konsol AWS Glue
<a name="monitor-debug-multiple-visualize"></a>

Dasbor berikut melapiskan metrik tertulis byte Amazon S3 dari tugas Input ke metrik pembacaan byte Amazon S3 pada lini waktu yang sama untuk tugas Output. Lini waktu tersebut menunjukkan eksekusi tugas yang berbeda dari tugas Input dan Output. Tugas Input (ditampilkan dalam warna merah) dimulai setiap 30 menit. Tugas Output (ditampilkan dalam warna coklat) dimulai pada saat Tugas Input selesai, dengan Konkurensi Maksimal 1. 

![\[Grafik yang menampilkan data yang dibaca dan ditulis.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-4.png)


Dalam contoh ini, [bookmark tugas](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html) tidak diaktifkan. Tidak ada konteks transformasi yang digunakan untuk mengaktifkan bookmark tugas dalam kode skrip tersebut. 

**Riwayat Tugas**: Tugas Input dan Output menjalani beberapa eksekusi, seperti yang ditunjukkan pada tab **Riwayat**, mulai dari 12:00 siang.

Tugas Input pada konsol AWS Glue terlihat seperti ini:

![\[Tangkapan layar konsol yang menampilkan tab Riwayat tugas Input.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-2.png)


Gambar berikut menunjukkan tugas Output:

![\[Tangkapan layar konsol yang menampilkan tab Riwayat tugas Output.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-3.png)


**Eksekusi tugas pertama**: Seperti yang ditunjukkan dalam grafik Byte Data yang Di-baca dan Di-tulis di bawah ini, eksekusi tugas pertama dari tugas Input dan Output antara jam 12:00 dan 12:30 menunjukkan sekitar area yang sama di bawah kurva. Area-area tersebut mewakili byte Amazon S3 yang ditulis oleh tugas Input dan byte Amazon S3 yang dibaca oleh tugas Output. Data ini juga dikonfirmasi oleh rasio byte Amazon S3 yang ditulis (dijumlahkan lebih dari 30 menit – frekuensi pemicu tugas untuk tugas Input). Titik data untuk rasio untuk eksekusi tugas Input yang dimulai pada 12:00 siang juga 1.

Grafik berikut menunjukkan rasio pengaliran data di semua eksekusi tugas:

![\[Grafik yang menampilkan rasio pengaliran data: byte yang ditulis dan byte dibaca.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-5.png)


**Eksekusi tugas kedua**: Dalam eksekusi tugas kedua, ada perbedaan yang jelas dalam jumlah byte yang dibaca oleh tugas Output dibandingkan dengan jumlah byte yang ditulis oleh tugas Input. (Bandingkan area di bawah kurva di dua eksekusi tugas untuk tugas Output, atau bandingkan area dalam eksekusi tugas kedua dari tugas Input dan Output.) Rasio byte yang dibaca dan ditulis menunjukkan bahwa Tugas Output membaca sekitar 2,5x data yang ditulis oleh tugas Input dalam rentang kedua 30 menit dari jam 12:30 hingga 13:00. Hal ini karena Tugas Output memproses kembali output eksekusi tugas pertama dari tugas Input karena bookmark tugas tidak diaktifkan. Rasio di atas 1 menunjukkan bahwa ada backlog data tambahan yang diproses oleh tugas Output.

**Eksekusi tugas ketiga**: Tugas Input cukup konsisten dalam hal jumlah byte yang ditulis (lihat area di bawah kurva merah). Namun, eksekusi tugas ketiga dari tugas Input berjalan lebih lama dari yang diharapkan (lihat ekor panjang kurva merah). Akibatnya, eksekusi tugas ketiga dari tugas Output dimulai terlambat. Eksekusi tugas ketiga hanya memproses sebagian kecil dari data yang terakumulasi di lokasi pentahapan di sisa 30 menit antara pukul 13:00 dan 13:30. Rasio aliran byte menunjukkan bahwa ia hanya memproses 0,83 data yang ditulis oleh eksekusi tugas ketiga dari tugas Input (lihat rasio di pukul 13:00).

**Tumpang tindih tugas Input dan Output**: Eksekusi tugas keempat dari tugas Input dimulai pada pukul 13:30 sesuai jadwal, sebelum eksekusi tugas ketiga dari tugas Output selesai. Ada tumpang tindih parsial antara dua eksekusi tugas ini. Namun demikian, eksekusi tugas ketiga dari tugas Output menangkap hanya file yang terdaftar di lokasi pentahapan Amazon S3 ketika dimulai sekitar pukul 13:17. Hal ini terdiri dari semua output data dari eksekusi tugas pertama dari tugas Input. Rasio aktual pada pukul 13:30 adalah sekitar 2.75. Eksekusi tugas ketiga dari tugas Output memproses sekitar 2.75x data yang ditulis oleh eksekusi tugas keempat dari tugas Input pada pukul 13:30 sampai 14:00.

Seperti yang ditunjukkan gambar ini, tugas Output mengolah ulang data dari lokasi pentahapan dari semua eksekusi tugas sebelumnya dari tugas Input. Akibatnya, eksekusi tugas keempat untuk tugas Output menjadi eksekusi tugas terpanjang dan tumpang tindih dengan seluruh eksekusi tugas kelima dari Input tugas.

## Perbaiki pemrosesan file
<a name="monitor-debug-multiple-fix"></a>

Anda harus memastikan bahwa tugas Output memproses hanya file yang belum diproses oleh eksekusi tugas sebelumnya dari tugas Output. Untuk melakukan ini, aktifkan bookmark tugas dan atur konteks transformasi dalam tugas Output, sebagai berikut:

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [staging_path], "useS3ListImplementation":True,"recurse":True}, format="json", transformation_ctx = "bookmark_ctx")
```

Dengan bookmark tugas yang diaktifkan, tugas Output tidak akan memproses ulang data di lokasi pentahapan dari semua eksekusi tugas sebelumnya dari tugas Input. Pada gambar berikut, menunjukkan data yang dibaca dan ditulis, area yang ada di bawah kurva coklat cukup konsisten dan mirip dengan kurva merah. 

![\[Grafik yang menampilkan data yang dibaca dan ditulis sebagai garis merah dan coklat.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-6.png)


Rasio aliran byte juga kira-kira masih tetap mendekati 1 karena tidak ada data tambahan yang diproses.

![\[Grafik yang menampilkan rasio pengaliran data: byte yang ditulis dan byte dibaca\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-7.png)


Sebuah eksekusi tugas untuk tugas Output dimulai dan menangkap file di lokasi pentahapan sebelum eksekusi tugas Input berikutnya mulai menempatkan lebih banyak data ke lokasi pentahapan. Selama hal tersebut berjalan seperti itu, ia hanya memproses file yang ditangkap dari eksekusi tugas Input sebelumnya, dan rasio tetap dekat dengan 1.

![\[Grafik yang menampilkan rasio pengaliran data: byte yang ditulis dan byte dibaca\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-multiple-7.png)


Misalkan tugas Input memakan waktu lebih lama dari yang diharapkan, maka sebagai akibatnya, tugas Output menangkap file di lokasi pentahapan dari dua eksekusi tugas Input. Rasio ini kemudian lebih tinggi dari 1 untuk eksekusi tugas output itu. Namun demikian, eksekusi tugas Output berikutnya tidak memproses file yang sudah diproses oleh eksekusi tugas dari tugas Output.

# Pemantauan perencanaan kapasitas DPU
<a name="monitor-debug-capacity"></a>

Anda dapat menggunakan metrik pekerjaan AWS Glue untuk memperkirakan jumlah unit pemrosesan data (DPUs) yang dapat digunakan untuk skala AWS Glue pekerjaan.

**catatan**  
Halaman ini hanya berlaku untuk AWS Glue versi 0.9 dan 1.0. Versi selanjutnya AWS Glue berisi fitur hemat biaya yang memperkenalkan pertimbangan tambahan saat perencanaan kapasitas. 

**Topics**
+ [Kode diprofilkan](#monitor-debug-capacity-profile)
+ [Visualisasikan metrik yang diprofilkan di konsol AWS Glue](#monitor-debug-capacity-visualize)
+ [Tentukan kapasitas DPU yang optimal](#monitor-debug-capacity-fix)

## Kode diprofilkan
<a name="monitor-debug-capacity-profile"></a>

Skrip berikut membaca partisi Amazon Simple Storage Service (Amazon S3) yang berisi 428 file JSON gzip. Skrip tersebut menerapkan pemetaan untuk mengubah nama bidang, dan mengkonversi dan menuliskannya mereka ke Amazon S3 dalam format Apache Parquet. Anda menyediakan 10 DPUs sesuai default dan menjalankan pekerjaan ini. 

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [input_path], "useS3ListImplementation":True,"recurse":True}, format="json")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(map_spec])
datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet")
```

## Visualisasikan metrik yang diprofilkan di konsol AWS Glue
<a name="monitor-debug-capacity-visualize"></a>

**Job run 1:** Dalam menjalankan pekerjaan ini kami menunjukkan cara mencari jika ada yang kurang disediakan DPUs di cluster. Fungsi eksekusi tugas di AWS Glue menampilkan total [jumlah pelaksana yang berjalan aktif](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberAllExecutors), [jumlah tahap yang telah selesai](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.numCompletedStages), dan [jumlah maksimal pelaksana yang dibutuhkan](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors).

Jumlah pelaksana maksimum yang dibutuhkan dihitung dengan menambahkan jumlah total tugas berjalan dan tugas yang tertunda, dan membaginya dengan tugas per pelaksana. Hasil ini adalah ukuran jumlah total pelaksana yang diperlukan untuk memenuhi beban saat ini. 

Sebaliknya, jumlah pelaksana yang berjalan aktif mengukur berapa banyak pelaksana yang menjalankan tugas Apache Spark secara aktif. Saat tugas berlangsung, pelaksana maksimum yang diperlukan dapat mengubah dan biasanya turun menjelang akhir tugas saat antrean tugas tertunda berkurang.

Garis merah horizontal pada grafik berikut menunjukkan jumlah pelaksana maksimum yang dialokasikan, yang tergantung pada jumlah yang Anda alokasikan untuk pekerjaan DPUs itu. Dalam hal ini, Anda mengalokasikan 10 DPUs untuk menjalankan pekerjaan. Satu DPU dicadangkan untuk pengelolaan. Sembilan DPUs menjalankan dua pelaksana masing-masing dan satu eksekutor dicadangkan untuk driver Spark. Driver Spark berjalan dalam aplikasi utama. Jadi, jumlah maksimum pelaksana yang dialokasikan adalah 2\$19 - 1 = 17 pelaksana.

![\[Metrik tugas yang menunjukkan pelaksana aktif dan pelaksana maksimum yang dibutuhkan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-capacity-1.png)


Sebagaimana ditunjukkan dalam grafik, jumlah maksimum pelaksana yang diperlukan mulai pada 107 pada awal tugas, sedangkan jumlah pelaksana aktif tetap 17. Ini sama dengan jumlah pelaksana maksimum yang dialokasikan dengan 10. DPUs Rasio antara jumlah maksimum pelaksana yang dibutuhkan dan jumlah maksimum pelaksana yang dialokasikan (menambahkan 1 ke kedua driver Spark) memberi Anda faktor kurang-penyediaan: 108/18 = 6x. Anda dapat menyediakan 6 (di bawah rasio penyediaan) \$19 (kapasitas DPU saat ini - 1) \$1 1 DPUs = 55 DPUs untuk skala pekerjaan untuk menjalankannya dengan paralelisme maksimum dan menyelesaikan lebih cepat. 

Konsol AWS Glue menampilkan metrik tugas detail sebagai garis statis yang mewakili jumlah asli dari jumlah maksimum pelaksana yang dialokasikan. Konsol menghitung pelaksana maksimum yang dialokasikan dari definisi tugas untuk metrik. Berdasarkan batasan, untuk metrik job run yang mendetail, konsol menghitung eksekutor maksimum yang dialokasikan dari konfigurasi job run, khususnya yang dialokasikan untuk menjalankan pekerjaan. DPUs Untuk melihat metrik masing-masing eksekusi tugas, pilih sebuah eksekusi tugas dan pilih **Lihat metrik eksekusi**.

![\[Metrik tugas yang menunjukkan pergerakan data ETL.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-capacity-2.png)


Melihat byte Amazon S3 yang [di-baca](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes) dan [di-tulis](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes), perhatikan bahwa tugas menghabiskan waktu enam menit streaming data dari Amazon S3 dan menuliskannya secara paralel. Semua inti yang dialokasikan DPUs membaca dan menulis ke Amazon S3. Jumlah maksimum pelaksana yang dibutuhkan menjadi 107 juga cocok dengan jumlah file dalam input Amazon S3 path—yakni 428. Setiap pelaksana dapat meluncurkan empat tugas Spark untuk memproses empat file input (JSON gzip).

## Tentukan kapasitas DPU yang optimal
<a name="monitor-debug-capacity-fix"></a>

Berdasarkan hasil dari pekerjaan sebelumnya, Anda dapat meningkatkan jumlah total yang DPUs dialokasikan menjadi 55, dan melihat bagaimana kinerja pekerjaan. Tugas selesai dalam waktu kurang dari tiga menit—setengah dari waktu yang dibutuhkan sebelumnya. Penskalaan keluar tugas tidak linear dalam hal ini karena eksekusi tugas merupakan eksekusi tugas singkat. Pekerjaan dengan tugas yang berumur panjang atau sejumlah besar tugas (sejumlah besar pelaksana maksimum yang dibutuhkan) mendapat manfaat dari percepatan kinerja skala close-to-linear DPU.

![\[Grafik menunjukkan peningkatan jumlah total yang dialokasikan DPUs\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-capacity-3.png)


Sebagaimana yang ditunjukkan gambar di atas, jumlah pelaksana aktif mencapai jumlah pelaksana maksimum yang dialokasikan—yakni, 107 pelaksana. Demikian pula, jumlah pelaksana maksimum yang dibutuhkan tidak pernah berada di atas jumlah maksimum pelaksana yang dialokasikan. Jumlah maksimum pelaksana yang dibutuhkan dihitung dari jumlah tugas yang aktif berjalan dan tertunda, sehingga mungkin lebih kecil dari jumlah pelaksana aktif. Hal ini karena dapat ada pelaksana yang sebagian atau seluruhnya menganggur dalam waktu singkat dan belum dinonaktifkan.

![\[Grafik yang menunjukkan jumlah pelaksana aktif mencapai jumlah maksimum pelaksana yang dialokasikan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-capacity-4.png)


Eksekusi tugas ini menggunakan 6x pelaksana lebih untuk membaca dan menulis dari Amazon S3 secara paralel. Akibatnya, eksekusi tugas ini menggunakan lebih banyak bandwidth Amazon S3 untuk membaca dan menulis, dan selesai lebih cepat. 

### Identifikasi kelebihan DPUs
<a name="monitor-debug-capacity-over"></a>

Selanjutnya, Anda dapat menentukan apakah menskalakan pekerjaan dengan 100 DPUs (99 \$1 2 = 198 pelaksana) membantu untuk meningkatkan skala lebih jauh. Seperti yang ditunjukkan dalam grafik berikut, tugas masih membutuhkan waktu tiga menit untuk selesai. Demikian pula, pekerjaan tidak melampaui 107 eksekutor (55 DPUs konfigurasi), dan 91 eksekutor sisanya dilebih-lebihkan dan tidak digunakan sama sekali. Ini menunjukkan bahwa peningkatan jumlah DPUs mungkin tidak selalu meningkatkan kinerja, sebagaimana terbukti dari pelaksana maksimum yang dibutuhkan.

![\[Grafik yang menunjukkan bahwa kinerja pekerjaan tidak selalu meningkat dengan meningkatkan jumlah DPUs.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/monitor-debug-capacity-5.png)


### Bandingkan perbedaan waktu
<a name="monitor-debug-capacity-time"></a>

Tiga pekerjaan berjalan yang ditunjukkan dalam tabel berikut merangkum waktu pelaksanaan pekerjaan untuk 10 DPUs, 55 DPUs, dan 100 DPUs. Anda dapat menemukan bahwa kapasitas DPU untuk meningkatkan waktu pelaksanaan tugas menggunakan perkiraan yang Anda buat dengan memantau tugas pertama.


| ID Tugas | Jumlah DPUs | Waktu eksekusi | 
| --- | --- | --- | 
| jr\$1c894524c8ef5048a4d9... | 10 | 6 menit. | 
| jr\$11a466cf2575e7ffe6856... | 55 | 3 menit. | 
| jr\$134fa1ed4c6aa9ff0a814... | 100 | 3 menit. | 

# Pemecahan masalah AI generatif untuk Apache Spark in Glue AWS
<a name="troubleshoot-spark"></a>

 Pemecahan Masalah AI Generatif untuk pekerjaan Apache Spark di AWS Glue adalah kemampuan baru yang membantu insinyur data dan ilmuwan mendiagnosis dan memperbaiki masalah dalam aplikasi Spark mereka dengan mudah. Memanfaatkan pembelajaran mesin dan teknologi AI generatif, fitur ini menganalisis masalah dalam pekerjaan Spark dan memberikan analisis akar penyebab terperinci bersama dengan rekomendasi yang dapat ditindaklanjuti untuk menyelesaikan masalah tersebut. Pemecahan masalah AI generatif untuk Apache Spark tersedia untuk pekerjaan yang berjalan di AWS Glue versi 4.0 dan yang lebih baru. 


|  | 
| --- |
|  Ubah pemecahan masalah Apache Spark Anda dengan Agen Pemecahan Masalah bertenaga AI kami, sekarang mendukung semua mode penerapan utama termasuk Glue, Amazon EMR-, Amazon EMR-Serverless, dan AWS Amazon AI Notebook. EC2 SageMaker Agen yang kuat ini menghilangkan proses debugging yang kompleks dengan menggabungkan interaksi bahasa alami, analisis beban kerja waktu nyata, dan rekomendasi kode cerdas menjadi pengalaman yang mulus. Untuk detail implementasi, lihat [Apa itu Agen Pemecahan Masalah Apache Spark untuk Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/spark-troubleshoot.html). Lihat demonstrasi kedua di [Menggunakan contoh pemecahan masalah Agen Pemecahan Masalah untuk](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/spark-troubleshooting-using-troubleshooting-agent.html) AWS Glue.  | 

## Bagaimana cara kerja Pemecahan Masalah Generatif AI untuk Apache Spark?
<a name="troubleshoot-spark-how-it-works"></a>

 Untuk pekerjaan Spark Anda yang gagal, Pemecahan Masalah Generatif AI menganalisis metadata pekerjaan dan metrik serta log tepat yang terkait dengan tanda tangan kesalahan pekerjaan Anda untuk menghasilkan analisis akar penyebab, dan merekomendasikan solusi dan praktik terbaik khusus untuk membantu mengatasi kegagalan pekerjaan. 

## Menyiapkan Pemecahan Masalah AI Generatif untuk Apache Spark untuk pekerjaan Anda
<a name="w2aac37c11c12c33c13"></a>

### Mengonfigurasi izin IAM
<a name="troubleshoot-spark-iam-permissions"></a>

 Memberikan izin untuk yang APIs digunakan oleh Spark Troubleshooting untuk pekerjaan Anda di AWS Glue memerlukan izin IAM yang sesuai. Anda dapat memperoleh izin dengan melampirkan AWS kebijakan kustom berikut ke identitas IAM Anda (seperti pengguna, peran, atau grup). 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartCompletion",
        "glue:GetCompletion"
      ],
      "Resource": [
        "arn:aws:glue:*:*:completion/*",
        "arn:aws:glue:*:*:job/*"
      ]
    }
  ]
}
```

------

**catatan**  
 Dua berikut ini APIs digunakan dalam kebijakan IAM untuk mengaktifkan pengalaman ini melalui AWS Glue Studio Console: `StartCompletion` dan. `GetCompletion` 

### Menetapkan izin
<a name="troubleshoot-spark-assigning-permissions"></a>

 Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda: 
+  Untuk pengguna dan grup di Pusat Identitas IAM: Buat set izin. Ikuti petunjuk di [Buat set izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) di Panduan Pengguna Pusat Identitas IAM. 
+  Untuk pengguna yang dikelola di IAM melalui penyedia identitas: Buat peran untuk federasi identitas. Ikuti petunjuk dalam [Membuat peran untuk penyedia identitas pihak ketiga (federasi)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) di Panduan Pengguna IAM. 
+  Untuk pengguna IAM: Buat peran yang dapat diasumsikan oleh pengguna Anda. Ikuti petunjuk dalam [Membuat peran untuk pengguna IAM di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) IAM. 

## Menjalankan analisis pemecahan masalah dari pekerjaan yang gagal
<a name="troubleshoot-spark-run-analysis"></a>

 Anda dapat mengakses fitur pemecahan masalah melalui beberapa jalur di konsol AWS Glue. Berikut cara memulai: 

### Opsi 1: Dari halaman Daftar Pekerjaan
<a name="troubleshoot-spark-from-jobs-list"></a>

1.  Buka konsol AWS Glue di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1.  Di panel navigasi, pilih **ETL Jobs**. 

1.  Temukan pekerjaan Anda yang gagal di daftar pekerjaan. 

1.  Pilih tab **Runs** di bagian detail pekerjaan. 

1.  Klik pada tugas gagal yang ingin Anda analisis. 

1.  Pilih **Troubleshoot dengan AI** untuk memulai analisis. 

1.  Saat analisis pemecahan masalah selesai, Anda dapat melihat analisis akar penyebab dan rekomendasi di tab **Analisis pemecahan masalah** di bagian bawah layar. 

![\[GIF menunjukkan implementasi ujung ke ujung dari proses yang gagal dan pemecahan masalah dengan fitur AI yang berjalan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/troubleshoot_spark_option_1_jobs_list.gif)


### Opsi 2: Menggunakan halaman Job Run Monitoring
<a name="troubleshoot-spark-job-run-monitoring-page"></a>

1.  Arahkan ke halaman **pemantauan Job run**. 

1.  Temukan pekerjaan Anda yang gagal dijalankan. 

1.  Pilih menu tarik-turun **Tindakan**. 

1.  Pilih **Troubleshoot dengan AI**. 

![\[GIF menunjukkan implementasi ujung ke ujung dari proses yang gagal dan pemecahan masalah dengan fitur AI yang berjalan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/troubleshoot_spark_option_2_job_monitoring.gif)


### Opsi 3: Dari halaman Detail Job Run
<a name="troubleshoot-spark-job-run-details-page"></a>

1.  Arahkan ke halaman detail job run yang gagal dengan mengklik **Lihat detail** pada **proses** gagal dari tab Runs atau memilih pekerjaan yang dijalankan dari halaman **pemantauan Job run**. 

1.  Di halaman rincian pekerjaan, temukan tab **Analisis pemecahan masalah**. 

## Kategori pemecahan masalah yang didukung
<a name="troubleshoot-spark-supported-troubleshooting-categories"></a>

 Layanan ini berfokus pada tiga kategori utama masalah yang sering dihadapi oleh insinyur dan pengembang data dalam aplikasi Spark mereka: 
+  **Penyiapan sumber daya dan kesalahan akses:** Saat menjalankan aplikasi Spark di AWS Glue, pengaturan sumber daya dan kesalahan akses adalah salah satu masalah yang paling umum namun menantang untuk didiagnosis. Kesalahan ini sering terjadi ketika aplikasi Spark Anda mencoba berinteraksi dengan AWS sumber daya tetapi mengalami masalah izin, sumber daya yang hilang, atau masalah konfigurasi. 
+  **Masalah driver Spark dan memori pelaksana:** Kesalahan terkait memori dalam pekerjaan Apache Spark bisa rumit untuk didiagnosis dan diselesaikan. Kesalahan ini sering muncul ketika persyaratan pemrosesan data Anda melebihi sumber daya memori yang tersedia, baik pada node driver atau node pelaksana. 
+  **Masalah kapasitas disk percikan: Kesalahan** terkait penyimpanan dalam pekerjaan AWS Glue Spark sering muncul selama operasi shuffle, tumpahan data, atau saat berhadapan dengan transformasi data skala besar. Kesalahan ini bisa sangat rumit karena mungkin tidak terwujud sampai pekerjaan Anda berjalan untuk sementara waktu, berpotensi membuang-buang waktu dan sumber daya komputasi yang berharga. 
+  **Kesalahan eksekusi kueri:** Kegagalan kueri di Spark SQL dan DataFrame operasi bisa sulit untuk dipecahkan karena pesan kesalahan mungkin tidak secara jelas mengarah ke akar penyebabnya, dan kueri yang berfungsi dengan baik dengan kumpulan data kecil tiba-tiba gagal dalam skala besar. Kesalahan ini menjadi lebih menantang ketika terjadi jauh di dalam jalur transformasi yang kompleks, di mana masalah sebenarnya mungkin berasal dari masalah kualitas data pada tahap awal daripada logika kueri itu sendiri. 

**catatan**  
 Sebelum menerapkan perubahan yang disarankan di lingkungan produksi Anda, tinjau perubahan yang disarankan secara menyeluruh. Layanan ini memberikan rekomendasi berdasarkan pola dan praktik terbaik, tetapi kasus penggunaan spesifik Anda mungkin memerlukan pertimbangan tambahan. 

## Wilayah yang didukung
<a name="troubleshoot-spark-supported-regions"></a>

Pemecahan masalah AI generatif untuk Apache Spark tersedia di wilayah berikut:
+ **Afrika**: Cape Town (af-south-1)
+ **Asia Pasifik**: Hong Kong (ap-east-1), Tokyo (ap-northeast-1), Seoul (ap-northeast-2), Osaka (ap-northeast-3), Mumbai (ap-south-1), Singapura (ap-south-1) Sydney (ap-southeast-2), dan Jakarta (ap-southeast-3)
+ **Eropa**: Frankfurt (eu-central-1), Stockholm (eu-north-1), Milan (eu-south-1), Irlandia (eu-west-1), London (eu-west-2), dan Paris (eu-west-3)
+ **Timur Tengah**: Bahrain (me-south-1) dan UEA (me-central-1)
+ **Amerika Utara**: Kanada (ca-central-1)
+ **Amerika Selatan**: São Paulo (sa-east-1)
+ **Amerika Serikat**: Virginia Utara (us-east-1), Ohio (us-east-2), California Utara (us-west-1), dan Oregon (us-west-2)

# Menggunakan tampilan terwujud dengan AWS Glue
<a name="materialized-views"></a>

AWS Glue versi 5.1 dan yang lebih baru mendukung pembuatan dan pengelolaan tampilan terwujud Apache Iceberg di Katalog Data Glue AWS . Tampilan terwujud adalah tabel terkelola yang menyimpan hasil yang telah dihitung sebelumnya dari kueri SQL dalam format Apache Iceberg dan diperbarui secara bertahap saat tabel sumber yang mendasarinya berubah. Anda dapat menggunakan tampilan terwujud untuk menyederhanakan jalur transformasi data dan mempercepat kinerja kueri untuk beban kerja analitis yang kompleks.

Saat Anda membuat tampilan terwujud menggunakan Spark in AWS Glue, definisi tampilan dan metadata disimpan di Katalog Data Glue AWS . Hasil yang telah dihitung sebelumnya disimpan sebagai tabel Apache Iceberg di bucket Amazon S3 Tables atau bucket tujuan umum Amazon S3 dalam akun Anda. Katalog Data AWS Glue secara otomatis memonitor tabel sumber dan menyegarkan tampilan terwujud menggunakan infrastruktur komputasi terkelola.

**Topics**
+ [Cara kerja tampilan terwujud dengan AWS Glue](#materialized-views-how-they-work)
+ [Prasyarat](#materialized-views-prerequisites)
+ [Mengkonfigurasi Spark untuk menggunakan tampilan terwujud](#materialized-views-configuring-spark)
+ [Membuat tampilan yang terwujud](#materialized-views-creating)
+ [Menanyakan tampilan yang terwujud](#materialized-views-querying)
+ [Menyegarkan tampilan terwujud](#materialized-views-refreshing)
+ [Mengelola tampilan yang terwujud](#materialized-views-managing)
+ [Izin untuk tampilan terwujud](#materialized-views-permissions)
+ [Memantau operasi tampilan terwujud](#materialized-views-monitoring)
+ [Contoh: Alur kerja lengkap](#materialized-views-complete-workflow)
+ [Pertimbangan dan batasan](#materialized-views-considerations-limitations)

## Cara kerja tampilan terwujud dengan AWS Glue
<a name="materialized-views-how-they-work"></a>

Tampilan terwujud terintegrasi dengan AWS Glue melalui dukungan Iceberg Apache Spark dalam pekerjaan AWS Glue dan AWS notebook Glue Studio. Saat Anda mengonfigurasi sesi Spark Anda untuk menggunakan Katalog Data AWS Glue, Anda dapat membuat tampilan terwujud menggunakan sintaks SQL standar. Pengoptimal Spark dapat secara otomatis menulis ulang kueri untuk menggunakan tampilan terwujud ketika mereka memberikan kinerja yang lebih baik, menghilangkan kebutuhan untuk memodifikasi kode aplikasi secara manual.

Katalog Data AWS Glue menangani semua aspek operasional pemeliharaan tampilan terwujud, termasuk:
+ Mendeteksi perubahan dalam tabel sumber menggunakan lapisan metadata Apache Iceberg
+ Menjadwalkan dan menjalankan operasi penyegaran menggunakan komputasi Spark terkelola
+ Menentukan apakah akan melakukan penyegaran penuh atau inkremental berdasarkan perubahan data
+ Menyimpan hasil yang telah dihitung sebelumnya dalam format Apache Iceberg untuk akses multi-engine

Anda dapat menanyakan tampilan terwujud dari AWS Glue menggunakan antarmuka Spark SQL yang sama yang Anda gunakan untuk tabel biasa. Data yang telah dihitung sebelumnya juga dapat diakses dari layanan lain termasuk Amazon Athena dan Amazon Redshift.

## Prasyarat
<a name="materialized-views-prerequisites"></a>

Untuk menggunakan tampilan terwujud dengan AWS Glue, Anda perlu:
+ Akun 
+ AWS Glue versi 5.1 atau yang lebih baru
+ Tabel sumber dalam format Apache Iceberg terdaftar di Katalog Data Glue AWS 
+ AWS Lake Formation izin yang dikonfigurasi untuk tabel sumber dan basis data target
+ Bucket S3 Tables atau bucket tujuan umum S3 yang terdaftar AWS Lake Formation untuk menyimpan data tampilan terwujud
+ Peran IAM dengan izin untuk mengakses AWS Glue Data Catalog dan Amazon S3

## Mengkonfigurasi Spark untuk menggunakan tampilan terwujud
<a name="materialized-views-configuring-spark"></a>

Untuk membuat dan mengelola tampilan terwujud di AWS Glue, konfigurasikan sesi Spark Anda dengan ekstensi Iceberg dan pengaturan katalog yang diperlukan. Metode konfigurasi bervariasi tergantung pada apakah Anda menggunakan pekerjaan AWS Glue atau notebook AWS Glue Studio.

### Mengkonfigurasi pekerjaan AWS Glue
<a name="materialized-views-configuring-glue-jobs"></a>

Saat membuat atau memperbarui pekerjaan AWS Glue, tambahkan parameter konfigurasi berikut sebagai parameter pekerjaan:

#### Untuk ember Tabel S3
<a name="materialized-views-s3-tables-buckets"></a>

```
job = glue.create_job(
    Name='materialized-view-job',
    Role='arn:aws:iam::111122223333:role/GlueServiceRole',
    Command={
        'Name': 'glueetl',
        'ScriptLocation': 's3://amzn-s3-demo-bucket/scripts/mv-script.py',
        'PythonVersion': '3'
    },
    DefaultArguments={
        '--enable-glue-datacatalog': 'true',
        '--conf': 'spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions '
        '--conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog '
                  '--conf spark.sql.catalog.glue_catalog.type=glue '
                  '--conf spark.sql.catalog.glue_catalog.warehouse=s3://amzn-s3-demo-bucket/warehouse '
                  '--conf spark.sql.catalog.glue_catalog.glue.region=us-east-1 '
                  '--conf spark.sql.catalog.glue_catalog.glue.id=111122223333 '
                  '--conf spark.sql.catalog.glue_catalog.glue.account-id=111122223333 ',
                  '--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true ',
                  '--conf spark.sql.catalog.s3t_catalog=org.apache.iceberg.spark.SparkCatalog '
                  '--conf spark.sql.catalog.s3t_catalog.type=glue '
                  '--conf spark.sql.catalog.s3t_catalog.glue.id=111122223333:s3tablescatalog/my-table-bucket ',
                  '--conf spark.sql.catalog.s3t_catalog.glue.account-id=111122223333 ',
                  '--conf spark.sql.catalog.s3t_catalog.glue.lakeformation-enabled=true ',
                  '--conf spark.sql.catalog.s3t_catalog.warehouse=s3://amzn-s3-demo-bucket/mv-warehouse '
                  '--conf spark.sql.catalog.s3t_catalog.glue.region=us-east-1 '
                  '--conf spark.sql.defaultCatalog=s3t_catalog '
                  '--conf spark.sql.optimizer.answerQueriesWithMVs.enabled=true '
                  '--conf spark.sql.materializedViews.metadataCache.enabled=true'
    },
    GlueVersion='5.1'
)
```

#### Untuk ember tujuan umum S3
<a name="materialized-views-s3-general-purpose-buckets"></a>

```
job = glue.create_job(
    Name='materialized-view-job',
    Role='arn:aws:iam::111122223333:role/GlueServiceRole',
    Command={
        'Name': 'glueetl',
        'ScriptLocation': 's3://amzn-s3-demo-bucket/scripts/mv-script.py',
        'PythonVersion': '3'
    },
    DefaultArguments={
        '--enable-glue-datacatalog': 'true',
        '--conf': 'spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions '
                  '--conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog '
                  '--conf spark.sql.catalog.glue_catalog.type=glue '
                  '--conf spark.sql.catalog.glue_catalog.warehouse=s3://amzn-s3-demo-bucket/warehouse '
                  '--conf spark.sql.catalog.glue_catalog.glue.region=us-east-1 '
                  '--conf spark.sql.catalog.glue_catalog.glue.id=111122223333 ',
                  '--conf spark.sql.catalog.glue_catalog.glue.account-id=111122223333 ',
                  '--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true ',
                  '--conf spark.sql.defaultCatalog=glue_catalog '
                  '--conf spark.sql.optimizer.answerQueriesWithMVs.enabled=true '
                  '--conf spark.sql.materializedViews.metadataCache.enabled=true'
    },
    GlueVersion='5.1'
)
```

### Mengkonfigurasi notebook AWS Glue Studio
<a name="materialized-views-configuring-glue-studio-notebooks"></a>

Di notebook AWS Glue Studio, konfigurasikan sesi Spark Anda menggunakan perintah ajaib %%configure di awal buku catatan Anda:

```
%%configure
{
    "conf": {
        "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
        "spark.sql.catalog.glue_catalog": "org.apache.iceberg.spark.SparkCatalog",
        "spark.sql.catalog.glue_catalog.type": "glue",
        "spark.sql.catalog.glue_catalog.warehouse": "s3://amzn-s3-demo-bucket/warehouse",
        "spark.sql.catalog.glue_catalog.glue.region": "us-east-1",
        "spark.sql.catalog.glue_catalog.glue.id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.account-id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.lakeformation-enabled": "true",
        "spark.sql.defaultCatalog": "glue_catalog",
        "spark.sql.optimizer.answerQueriesWithMVs.enabled": "true",
        "spark.sql.materializedViews.metadataCache.enabled": "true"
    }
}
```

### Mengaktifkan penyegaran inkremental
<a name="materialized-views-enabling-incremental-refresh"></a>

Untuk mengaktifkan pengoptimalan penyegaran inkremental, tambahkan properti konfigurasi berikut ke parameter pekerjaan atau konfigurasi buku catatan Anda:

```
--conf spark.sql.optimizer.incrementalMVRefresh.enabled=true
--conf spark.sql.optimizer.incrementalMVRefresh.deltaThresholdCheckEnabled=false
```

### Parameter konfigurasi
<a name="materialized-views-configuration-parameters"></a>

Parameter konfigurasi berikut mengontrol perilaku tampilan terwujud:
+ `spark.sql.extensions`- Mengaktifkan ekstensi sesi Iceberg Spark yang diperlukan untuk dukungan tampilan terwujud.
+ `spark.sql.optimizer.answerQueriesWithMVs.enabled`— Memungkinkan penulisan ulang kueri otomatis untuk menggunakan tampilan terwujud. Setel ke true untuk mengaktifkan pengoptimalan ini.
+ `spark.sql.materializedViews.metadataCache.enabled`— Mengaktifkan caching metadata tampilan terwujud untuk optimasi kueri. Setel ke true untuk meningkatkan kinerja penulisan ulang kueri.
+ `spark.sql.optimizer.incrementalMVRefresh.enabled`— Mengaktifkan optimasi penyegaran inkremental. Setel ke true untuk memproses hanya data yang diubah selama operasi penyegaran.
+ `spark.sql.optimizer.answerQueriesWithMVs.decimalAggregateCheckEnabled`— Mengontrol validasi operasi agregat desimal dalam penulisan ulang kueri. Setel ke false untuk menonaktifkan pemeriksaan overflow desimal tertentu.

## Membuat tampilan yang terwujud
<a name="materialized-views-creating"></a>

Anda membuat tampilan terwujud menggunakan pernyataan CREATE MATERIALIZED VIEW SQL di AWS Glue jobs atau notebook. Definisi tampilan menentukan logika transformasi sebagai kueri SQL yang mereferensikan satu atau lebih tabel sumber.

### Membuat tampilan dasar yang terwujud dalam pekerjaan AWS Glue
<a name="materialized-views-creating-basic-glue-jobs"></a>

Contoh berikut menunjukkan pembuatan tampilan terwujud dalam skrip pekerjaan AWS Glue, gunakan nama tabel yang sepenuhnya memenuhi syarat dengan konvensi penamaan tiga bagian dalam definisi tampilan:

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# Create materialized view
spark.sql("""
    CREATE MATERIALIZED VIEW customer_orders
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")
```

### Membuat tampilan terwujud dengan penyegaran otomatis
<a name="materialized-views-creating-automatic-refresh"></a>

Untuk mengonfigurasi penyegaran otomatis, tentukan jadwal penyegaran saat membuat tampilan, menggunakan nama tabel yang sepenuhnya memenuhi syarat dengan konvensi penamaan tiga bagian dalam definisi tampilan:

```
spark.sql("""
    CREATE MATERIALIZED VIEW customer_orders
    SCHEDULE REFRESH EVERY 1 HOUR
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")
```

### Membuat tampilan terwujud dengan referensi lintas katalog
<a name="materialized-views-creating-cross-catalog"></a>

Jika tabel sumber Anda berada dalam katalog yang berbeda dari tampilan materialisasi Anda, gunakan nama tabel yang sepenuhnya memenuhi syarat dengan konvensi penamaan tiga bagian di kedua nama tampilan dan definisi tampilan:

```
spark.sql("""
    CREATE MATERIALIZED VIEW s3t_catalog.analytics.customer_summary
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")
```

### Membuat tampilan terwujud di notebook AWS Glue Studio
<a name="materialized-views-creating-glue-studio-notebooks"></a>

Di notebook AWS Glue Studio, Anda dapat menggunakan perintah ajaib %%sql untuk membuat tampilan terwujud, menggunakan nama tabel yang sepenuhnya memenuhi syarat dengan konvensi penamaan tiga bagian dalam definisi tampilan:

```
%%sql
CREATE MATERIALIZED VIEW customer_orders
AS 
SELECT 
    customer_name, 
    COUNT(*) as order_count, 
    SUM(amount) as total_amount 
FROM glue_catalog.sales.orders
GROUP BY customer_name
```

## Menanyakan tampilan yang terwujud
<a name="materialized-views-querying"></a>

Setelah membuat tampilan terwujud, Anda dapat menanyakannya seperti tabel lainnya menggunakan pernyataan SQL SELECT standar dalam pekerjaan atau buku catatan AWS Glue Anda.

### Menanyakan lowongan kerja AWS Glue
<a name="materialized-views-querying-glue-jobs"></a>

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# Query materialized view
result = spark.sql("SELECT * FROM customer_orders")
result.show()
```

### Meminta di notebook AWS Glue Studio
<a name="materialized-views-querying-glue-studio-notebooks"></a>

```
%%sql
SELECT * FROM customer_orders
```

### Penulisan ulang kueri otomatis
<a name="materialized-views-automatic-query-rewrite"></a>

Ketika penulisan ulang kueri otomatis diaktifkan, pengoptimal Spark menganalisis kueri Anda dan secara otomatis menggunakan tampilan yang terwujud ketika mereka dapat meningkatkan kinerja. Misalnya, jika Anda menjalankan kueri berikut:

```
result = spark.sql("""
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM orders
    GROUP BY customer_name
""")
```

Pengoptimal Spark secara otomatis menulis ulang kueri ini untuk menggunakan tampilan materialisasi customer\$1orders alih-alih memproses tabel pesanan dasar, asalkan tampilan terwujud saat ini.

### Memverifikasi penulisan ulang kueri otomatis
<a name="materialized-views-verifying-automatic-query-rewrite"></a>

Untuk memverifikasi apakah kueri menggunakan penulisan ulang kueri otomatis, gunakan perintah EXPLORE EXTENDED:

```
spark.sql("""
    EXPLAIN EXTENDED
    SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount 
    FROM orders
    GROUP BY customer_name
""").show(truncate=False)
```

Dalam rencana eksekusi, cari nama tampilan terwujud dalam BatchScan operasi. Jika rencana menunjukkan BatchScan glue\$1catalog.analytics.customer\$1orders alih-alih glue\$1catalog.sales.orders, kueri telah ditulis ulang secara otomatis untuk menggunakan tampilan BatchScan terwujud.

Perhatikan bahwa penulisan ulang kueri otomatis memerlukan waktu agar cache metadata Spark terisi setelah membuat tampilan terwujud. Proses ini biasanya selesai dalam waktu 30 detik.

## Menyegarkan tampilan terwujud
<a name="materialized-views-refreshing"></a>

Anda dapat menyegarkan tampilan terwujud menggunakan dua metode: penyegaran penuh atau penyegaran tambahan. Penyegaran penuh menghitung ulang seluruh tampilan terwujud dari semua data tabel dasar, sementara penyegaran inkremental hanya memproses data yang telah berubah sejak penyegaran terakhir.

### Penyegaran penuh manual dalam pekerjaan AWS Glue
<a name="materialized-views-manual-full-refresh-glue-jobs"></a>

Untuk melakukan penyegaran penuh tampilan yang terwujud:

```
spark.sql("REFRESH MATERIALIZED VIEW customer_orders FULL")

# Verify updated results
result = spark.sql("SELECT * FROM customer_orders")
result.show()
```

### Penyegaran inkremental manual dalam pekerjaan AWS Glue
<a name="materialized-views-manual-incremental-refresh-glue-jobs"></a>

Untuk melakukan penyegaran tambahan, pastikan penyegaran inkremental diaktifkan dalam konfigurasi sesi Spark Anda, lalu jalankan:

```
spark.sql("REFRESH MATERIALIZED VIEW customer_orders")

# Verify updated results
result = spark.sql("SELECT * FROM customer_orders")
result.show()
```

Katalog Data AWS Glue secara otomatis menentukan apakah penyegaran tambahan berlaku berdasarkan definisi tampilan dan jumlah data yang diubah. Jika penyegaran inkremental tidak memungkinkan, operasi akan kembali ke penyegaran penuh.

### Menyegarkan di notebook AWS Glue Studio
<a name="materialized-views-refreshing-glue-studio-notebooks"></a>

Di buku catatan, gunakan perintah ajaib %%sql:

```
%%sql
REFRESH MATERIALIZED VIEW customer_orders FULL
```

### Memverifikasi eksekusi penyegaran inkremental
<a name="materialized-views-verifying-incremental-refresh"></a>

Untuk mengonfirmasi bahwa penyegaran inkremental berhasil dijalankan, aktifkan logging debug di pekerjaan AWS Glue Anda:

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext
import logging

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# Enable debug logging
logger = logging.getLogger('org.apache.spark.sql')
logger.setLevel(logging.DEBUG)

# Execute refresh
spark.sql("REFRESH MATERIALIZED VIEW customer_orders")
```

Cari pesan berikut di log pekerjaan AWS Glue:

```
DEBUG RefreshMaterializedViewExec: Executed Incremental Refresh
```

## Mengelola tampilan yang terwujud
<a name="materialized-views-managing"></a>

AWS Glue menyediakan perintah SQL untuk mengelola siklus hidup tampilan terwujud dalam pekerjaan dan notebook Anda.

### Menjelaskan tampilan yang terwujud
<a name="materialized-views-describing"></a>

Untuk melihat metadata tentang tampilan terwujud, termasuk definisi, status penyegaran, dan stempel waktu penyegaran terakhir:

```
spark.sql("DESCRIBE EXTENDED customer_orders").show(truncate=False)
```

### Mengubah tampilan yang terwujud
<a name="materialized-views-altering"></a>

Untuk mengubah jadwal penyegaran tampilan terwujud yang ada:

```
spark.sql("""
    ALTER MATERIALIZED VIEW customer_orders 
    ADD SCHEDULE REFRESH EVERY 2 HOURS
""")
```

Untuk menghapus penyegaran otomatis:

```
spark.sql("""
    ALTER MATERIALIZED VIEW customer_orders 
    DROP SCHEDULE
""")
```

### Menjatuhkan tampilan yang terwujud
<a name="materialized-views-dropping"></a>

Untuk menghapus tampilan terwujud:

```
spark.sql("DROP MATERIALIZED VIEW customer_orders")
```

Perintah ini menghapus definisi tampilan terwujud dari Katalog Data AWS Glue dan menghapus data tabel Iceberg yang mendasarinya dari bucket S3 Anda.

### Daftar tampilan terwujud
<a name="materialized-views-listing"></a>

Untuk mencantumkan semua tampilan terwujud dalam database:

```
spark.sql("SHOW VIEWS FROM analytics").show()
```

## Izin untuk tampilan terwujud
<a name="materialized-views-permissions"></a>

Untuk membuat dan mengelola tampilan terwujud, Anda harus mengonfigurasi AWS Lake Formation izin. Peran IAM yang menciptakan tampilan terwujud (peran definer) memerlukan izin khusus pada tabel sumber dan database target.

### Izin yang diperlukan untuk peran definer
<a name="materialized-views-required-permissions-definer-role"></a>

Peran definer harus memiliki izin Lake Formation berikut:
+ Pada tabel sumber - PILIH atau SEMUA izin tanpa filter baris, kolom, atau sel
+ Pada database target - izin CREATE\$1TABLE
+ Pada Katalog Data AWS Glue — GetTable dan izin CreateTable API

Saat Anda membuat tampilan terwujud, ARN peran definer disimpan dalam definisi tampilan. Katalog Data AWS Glue mengasumsikan peran ini saat menjalankan operasi penyegaran otomatis. Jika peran definer kehilangan akses ke tabel sumber, operasi refresh akan gagal hingga izin dipulihkan.

### Izin IAM untuk pekerjaan Glue AWS
<a name="materialized-views-iam-permissions-glue-jobs"></a>

Peran IAM pekerjaan AWS Glue Anda memerlukan izin berikut:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetCatalog",
                "glue:GetCatalogs",
                "glue:GetTable",
                "glue:GetTables",
                "glue:CreateTable",
                "glue:UpdateTable",
                "glue:DeleteTable",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*:/aws-glue/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:GetDataAccess"
            ],
            "Resource": "*"
        }
    ]
}
```

Peran yang Anda gunakan untuk penyegaran otomatis Tampilan Materialisasi harus memiliki PassRole izin iam: pada peran tersebut.

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::111122223333:role/materialized-view-role-name"
      ]
    }
  ]
}
```

Agar Glue secara otomatis menyegarkan tampilan terwujud untuk Anda, peran tersebut juga harus memiliki kebijakan kepercayaan berikut yang memungkinkan layanan untuk mengambil peran tersebut.

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::111122223333:role/materialized-view-role-name"
      ]
    }
  ]
}
```

Jika Tampilan Materialisasi disimpan di Bucket Tabel S3, Anda juga perlu menambahkan izin berikut ke peran.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3tables:PutTableMaintenanceConfiguration"
      ],
      "Resource": "arn:aws:s3tables:*:123456789012:*"
    }
  ]
}
```

### Memberikan akses ke tampilan yang terwujud
<a name="materialized-views-granting-access"></a>

Untuk memberi pengguna lain akses ke kueri tampilan terwujud, gunakan AWS Lake Formation untuk memberikan izin SELECT pada tabel tampilan terwujud. Pengguna dapat menanyakan tampilan terwujud tanpa memerlukan akses langsung ke tabel sumber yang mendasarinya.

Untuk informasi lebih lanjut tentang mengonfigurasi izin Lake Formation, lihat Memberikan dan mencabut izin pada sumber daya Katalog Data di Panduan Pengembang. AWS Lake Formation 

## Memantau operasi tampilan terwujud
<a name="materialized-views-monitoring"></a>

Katalog Data AWS Glue menerbitkan metrik dan log untuk operasi penyegaran tampilan terwujud ke Amazon. CloudWatch Anda dapat memantau status penyegaran, durasi, dan volume data yang diproses melalui CloudWatch metrik.

### Melihat log pekerjaan
<a name="materialized-views-viewing-job-logs"></a>

Untuk melihat log untuk pekerjaan AWS Glue yang membuat atau menyegarkan tampilan terwujud:

1. Buka konsol AWS Glue.

1. Pilih Jobs dari panel navigasi.

1. Pilih pekerjaan Anda dan pilih Runs.

1. Pilih proses tertentu dan pilih Log untuk melihat CloudWatch log.

### Menyiapkan alarm
<a name="materialized-views-setting-up-alarms"></a>

Untuk menerima pemberitahuan saat operasi penyegaran gagal atau melebihi durasi yang diharapkan, buat CloudWatch alarm pada metrik tampilan terwujud. Anda juga dapat mengonfigurasi EventBridge aturan Amazon untuk memicu respons otomatis untuk menyegarkan peristiwa.

## Contoh: Alur kerja lengkap
<a name="materialized-views-complete-workflow"></a>

Contoh berikut menunjukkan alur kerja lengkap untuk membuat dan menggunakan tampilan terwujud di Glue. AWS 

### Contoh skrip pekerjaan AWS Glue
<a name="materialized-views-example-glue-job-script"></a>

```
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

# Create database and base table
spark.sql("CREATE DATABASE IF NOT EXISTS sales")
spark.sql("USE sales")

spark.sql("""
    CREATE TABLE IF NOT EXISTS orders (
        id INT,
        customer_name STRING,
        amount DECIMAL(10,2),
        order_date DATE
    )
""")

# Insert sample data
spark.sql("""
    INSERT INTO orders VALUES 
        (1, 'John Doe', 150.00, DATE('2024-01-15')),
        (2, 'Jane Smith', 200.50, DATE('2024-01-16')),
        (3, 'Bob Johnson', 75.25, DATE('2024-01-17'))
""")

# Create materialized view
spark.sql("""
    CREATE MATERIALIZED VIEW customer_summary
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")

# Query the materialized view
print("Initial materialized view data:")
spark.sql("SELECT * FROM customer_summary").show()

# Insert additional data
spark.sql("""
    INSERT INTO orders VALUES 
        (4, 'Jane Smith', 350.00, DATE('2024-01-18')),
        (5, 'Bob Johnson', 100.25, DATE('2024-01-19'))
""")

# Refresh the materialized view
spark.sql("REFRESH MATERIALIZED VIEW customer_summary FULL")

# Query updated results
print("Updated materialized view data:")
spark.sql("SELECT * FROM customer_summary").show()

job.commit()
```

### Contoh notebook AWS Glue Studio
<a name="materialized-views-example-glue-studio-notebook"></a>

```
%%configure
{
    "conf": {
        "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
        "spark.sql.catalog.glue_catalog": "org.apache.iceberg.spark.SparkCatalog",
        "spark.sql.catalog.glue_catalog.type": "glue",
        "spark.sql.catalog.glue_catalog.warehouse": "s3://amzn-s3-demo-bucket/warehouse",
        "spark.sql.catalog.glue_catalog.glue.region": "us-east-1",
        "spark.sql.catalog.glue_catalog.glue.id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.account-id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.lakeformation-enabled": "true",
        "spark.sql.defaultCatalog": "glue_catalog",
        "spark.sql.optimizer.answerQueriesWithMVs.enabled": "true",
        "spark.sql.materializedViews.metadataCache.enabled": "true"
    }
}
```

```
%%sql
CREATE DATABASE IF NOT EXISTS sales
```

```
%%sql
USE sales
```

```
%%sql
CREATE TABLE IF NOT EXISTS orders (
    id INT,
    customer_name STRING,
    amount DECIMAL(10,2),
    order_date DATE
)
```

```
%%sql
INSERT INTO orders VALUES 
    (1, 'John Doe', 150.00, DATE('2024-01-15')),
    (2, 'Jane Smith', 200.50, DATE('2024-01-16')),
    (3, 'Bob Johnson', 75.25, DATE('2024-01-17'))
```

```
%%sql
CREATE MATERIALIZED VIEW customer_summary
AS 
SELECT 
    customer_name, 
    COUNT(*) as order_count, 
    SUM(amount) as total_amount 
FROM glue_catalog.sales.orders
GROUP BY customer_name
```

```
%%sql
SELECT * FROM customer_summary
```

```
%%sql
INSERT INTO orders VALUES 
    (4, 'Jane Smith', 350.00, DATE('2024-01-18')),
    (5, 'Bob Johnson', 100.25, DATE('2024-01-19'))
```

```
%%sql
REFRESH MATERIALIZED VIEW customer_summary FULL
```

```
%%sql
SELECT * FROM customer_summary
```

## Pertimbangan dan batasan
<a name="materialized-views-considerations-limitations"></a>

Pertimbangkan hal berikut saat menggunakan tampilan terwujud dengan AWS Glue:
+ Tampilan terwujud memerlukan AWS Glue versi 5.1 atau yang lebih baru.
+ Tabel sumber harus berupa tabel Apache Iceberg yang terdaftar di Katalog Data AWS Glue. Tabel Apache Hive, Apache Hudi, dan Linux Foundation Delta Lake tidak didukung saat peluncuran.
+ Tabel sumber harus berada di Wilayah dan akun yang sama dengan tampilan terwujud.
+ Semua tabel sumber harus diatur oleh AWS Lake Formation. Izin khusus IAM dan akses hybrid tidak didukung.
+ Tampilan terwujud tidak dapat AWS mereferensikan tampilan Glue Data Catalog, tampilan multi-dialek, atau tampilan terwujud lainnya sebagai tabel sumber.
+ Peran penentu tampilan harus memiliki akses baca penuh (PILIH atau SEMUA izin) pada semua tabel sumber tanpa filter baris, kolom, atau sel yang diterapkan.
+ Tampilan terwujud pada akhirnya konsisten dengan tabel sumber. Selama jendela penyegaran, kueri dapat mengembalikan data basi. Jalankan penyegaran manual untuk konsistensi langsung.
+ Interval penyegaran otomatis minimum adalah satu jam.
+ Incremental refresh mendukung subset terbatas dari operasi SQL. Definisi tampilan harus berupa blok SELECT-FROM-WHERE-GROUP BY-HAVING tunggal dan tidak dapat berisi operasi set, subquery, kata kunci DISTINCT dalam SELECT atau fungsi agregat, fungsi jendela, atau gabungan selain INNER JOIN.
+ Penyegaran tambahan tidak mendukung fungsi yang ditentukan pengguna atau fungsi bawaan tertentu. Hanya sebagian dari fungsi built-in Spark SQL yang didukung.
+ Penulisan ulang otomatis kueri hanya mempertimbangkan tampilan terwujud yang definisinya termasuk dalam subset SQL terbatas yang mirip dengan pembatasan penyegaran tambahan.
+ Pengidentifikasi yang berisi karakter khusus selain karakter alfanumerik dan garis bawah tidak didukung dalam kueri CREATE MATERIALIZED VIEW. Ini berlaku untuk semua jenis pengenal termasuk catalog/namespace/table nama, kolom dan nama bidang struct CTEs, dan alias.
+ Kolom tampilan terwujud yang dimulai dengan awalan \$1\$1ivm dicadangkan untuk penggunaan sistem. Amazon berhak untuk memodifikasi atau menghapus kolom ini dalam rilis future.
+ Klausa SORT BY, LIMIT, OFFSET, CLUSTER BY, dan ORDER BY tidak didukung dalam definisi tampilan terwujud.
+ Tabel sumber lintas wilayah dan lintas akun tidak didukung.
+ Tabel yang direferensikan dalam kueri tampilan harus menggunakan konvensi penamaan tiga bagian (misalnya, glue\$1catalog.my\$1db.my\$1table) karena penyegaran otomatis tidak menggunakan pengaturan katalog dan database default.
+ Operasi penyegaran penuh menimpa seluruh tabel dan membuat snapshot sebelumnya tidak tersedia.
+ Fungsi non-deterministik seperti rand () atau current\$1timestamp () tidak didukung dalam definisi tampilan terwujud.

# AWS Glue jenis pekerja
<a name="worker-types"></a>

## Ikhtisar
<a name="worker-types-overview"></a>

AWS Glue menyediakan beberapa jenis pekerja untuk mengakomodasi kebutuhan beban kerja yang berbeda, mulai dari pekerjaan streaming kecil hingga tugas pemrosesan data skala besar dan intensif memori. Bagian ini memberikan informasi lengkap tentang semua jenis pekerja yang tersedia, spesifikasinya, dan rekomendasi penggunaannya.

### Kategori tipe pekerja
<a name="worker-type-categories"></a>

AWS Glue menawarkan dua kategori utama jenis pekerja:
+ **Jenis Pekerja G**: Pekerja komputasi tujuan umum yang dioptimalkan untuk beban kerja ETL standar
+ **Jenis R Worker: Pekerja** yang dioptimalkan untuk memori yang dirancang untuk aplikasi Spark intensif memori

### Unit Pengolahan Data (DPUs)
<a name="data-processing-units"></a>

Sumber daya yang tersedia pada AWS Glue pekerja diukur dalam DPUs. DPU adalah ukuran relatif daya pemrosesan yang terdiri dari 4 v CPUs kapasitas komputasi dan memori 16 GB.

**Memory-Optimized DPUs (M-DPUs):** Pekerja tipe R menggunakan M-DPUs, yang menyediakan alokasi memori dua kali lipat untuk ukuran tertentu dibandingkan dengan standar. DPUs Ini berarti bahwa sementara DPU standar menyediakan 16 GB memori, M-DPU pada pekerja tipe R menyediakan memori 32GB yang dioptimalkan untuk aplikasi Spark intensif memori.

## Jenis pekerja yang tersedia
<a name="available-worker-types"></a>

### G.1X
<a name="g1x-standard-worker"></a>
+ **DPU**: 1 DPU (4 vCPUs, memori 16 GB)
+ **Penyimpanan**: 94GB disk (sekitar 44GB gratis)
+ **Kasus Penggunaan**: Data mengubah, bergabung, dan kueri - skalabel dan hemat biaya untuk sebagian besar pekerjaan

### G.2X
<a name="g2x-standard-worker"></a>
+ **DPU**: 2 DPU (8 vCPUs, memori 32 GB)
+ **Penyimpanan**: 138GB disk (sekitar 78GB gratis)
+ **Kasus Penggunaan**: Data mengubah, bergabung, dan kueri - skalabel dan hemat biaya untuk sebagian besar pekerjaan

### G.4X
<a name="g4x-large-worker"></a>
+ **DPU**: 4 DPU (16 vCPUs, memori 64 GB)
+ **Penyimpanan**: 256GB disk (sekitar 230GB gratis)
+ **Kasus Penggunaan**: Menuntut transformasi, agregasi, gabungan, dan kueri

### G.8X
<a name="g8x-extra-large-worker"></a>
+ **DPU**: 8 DPU (memori 32 vCPUs, 128 GB)
+ **Penyimpanan**: 512GB disk (sekitar 485GB gratis)
+ **Kasus Penggunaan**: Menuntut transformasi, agregasi, gabungan, dan kueri

### G.12X
<a name="g12x-very-large-worker"></a>
+ **DPU**: 12 DPU (48 vCPUs, memori 192 GB)
+ **Penyimpanan**: 768GB disk (sekitar 741GB gratis)
+ **Kasus Penggunaan**: Beban kerja yang sangat besar dan padat sumber daya yang membutuhkan kapasitas komputasi yang signifikan

### G.16X
<a name="g16x-maximum-worker"></a>
+ **DPU**: 16 DPU (64 vCPUs, memori 256 GB)
+ **Penyimpanan**: 1024GB disk (sekitar 996GB gratis)
+ **Kasus Penggunaan**: Beban kerja terbesar dan paling intensif sumber daya yang membutuhkan kapasitas komputasi maksimum

### R.1X - Memori-Dioptimalkan\$1
<a name="r1x-memory-optimized-small"></a>
+ **DPU**: 1 M-DPU (4 vCPUs, memori 32 GB)
+ **Kasus Penggunaan**: Beban kerja intensif memori dengan out-of-memory kesalahan yang sering terjadi atau persyaratan rasio tinggi memory-to-CPU

### R.2X - Memori-Dioptimalkan\$1
<a name="r2x-memory-optimized-medium"></a>
+ **DPU**: 2 M-DPU (memori 8 vCPUs, 64 GB)
+ **Kasus Penggunaan**: Beban kerja intensif memori dengan out-of-memory kesalahan yang sering terjadi atau persyaratan rasio tinggi memory-to-CPU

### R.4X - Memori-Dioptimalkan\$1
<a name="r4x-memory-optimized-large"></a>
+ **DPU**: 4 M-DPU (memori 16 vCPUs, 128 GB)
+ **Kasus Penggunaan**: Beban kerja intensif memori besar dengan out-of-memory kesalahan yang sering terjadi atau persyaratan rasio tinggi memory-to-CPU

### R.8X - Memori-Dioptimalkan\$1
<a name="r8x-memory-optimized-extra-large"></a>
+ **DPU**: 8 M-DPU (memori 32 vCPUs, 256 GB)
+ **Kasus Penggunaan**: Beban kerja intensif memori yang sangat besar dengan out-of-memory kesalahan yang sering terjadi atau persyaratan rasio tinggi memory-to-CPU

**\$1** Anda mungkin mengalami latensi startup yang lebih tinggi dengan para pekerja ini. Untuk mengatasi masalah ini, coba lakukan hal berikut:
+ Tunggu beberapa menit dan kemudian kirimkan pekerjaan Anda lagi.
+ Kirim pekerjaan baru dengan jumlah pekerja yang berkurang.
+ Kirim pekerjaan baru menggunakan jenis atau ukuran pekerja yang berbeda.

## Tabel spesifikasi tipe pekerja
<a name="worker-type-specifications"></a>


**Spesifikasi Jenis Pekerja**  

| Jenis Pekerja | DPU per Node | vCPU | Memori (GB) | Disk (GB) | Perkiraan Ruang Disk Bebas (GB) | Pelaksana Spark untuk Node | 
| --- | --- | --- | --- | --- | --- | --- | 
| G.1X | 1 | 4 | 16 | 94 | 44 | 1 | 
| G.2X | 2 | 8 | 32 | 138 | 78 | 1 | 
| G.4X | 4 | 16 | 64 | 256 | 230 | 1 | 
| G.8X | 8 | 32 | 128 | 512 | 485 | 1 | 
| G.12X | 12 | 48 | 192 | 768 | 741 | 1 | 
| G.16X | 16 | 64 | 256 | 1024 | 996 | 1 | 
| R.1X | 1 | 4 | 32 | 94 | 44 | 1 | 
| R.2X | 2 | 8 | 64 | 138 | 78 | 1 | 
| R.4X | 4 | 16 | 128 | 256 | 230 | 1 | 
| R.8X | 8 | 32 | 256 | 512 | 485 | 1 | 

*Catatan*: Jenis pekerja R memiliki konfigurasi yang dioptimalkan untuk memori dengan spesifikasi yang dioptimalkan untuk beban kerja intensif memori.

## Pertimbangan penting
<a name="important-considerations"></a>

### Latensi startup
<a name="startup-latency"></a>

**penting**  
Jenis pekerja G.12X dan G.16X, serta semua tipe pekerja R (R.1X hingga R.8X), mungkin mengalami latensi startup yang lebih tinggi. Untuk mengatasi masalah ini, coba lakukan hal berikut:  
Tunggu beberapa menit dan kemudian kirimkan pekerjaan Anda lagi.
Kirim pekerjaan baru dengan jumlah pekerja yang berkurang.
Kirim pekerjaan baru menggunakan jenis dan ukuran pekerja yang berbeda.

## Memilih jenis pekerja yang tepat
<a name="choosing-right-worker-type"></a>

### Untuk beban kerja ETL standar
<a name="standard-etl-workloads"></a>
+ **G.1X atau G.2X**: Paling hemat biaya untuk transformasi, penggabungan, dan kueri data tipikal
+ **G.4X atau G.8X**: Untuk beban kerja yang lebih menuntut dengan kumpulan data yang lebih besar

### Untuk beban kerja skala besar
<a name="large-scale-workloads"></a>
+ **G.12X**: Kumpulan data yang sangat besar yang membutuhkan sumber daya komputasi yang signifikan
+ **G.16X**: Kapasitas komputasi maksimum untuk beban kerja yang paling menuntut

### Untuk beban kerja intensif memori
<a name="memory-intensive-workloads"></a>
+ **R.1X atau R.2X**: Pekerjaan intensif memori kecil hingga menengah
+ **R.4X atau R.8X**: Beban kerja intensif memori besar dengan kesalahan OOM yang sering

## Pertimbangan Optimalisasi Biaya
<a name="cost-optimization-considerations"></a>
+ **Pekerja G standar**: Menyediakan keseimbangan sumber daya komputasi, memori, dan jaringan, dan dapat digunakan untuk berbagai beban kerja yang beragam dengan biaya lebih rendah
+ **Pekerja R**: Khusus untuk tugas intensif memori dengan kinerja cepat untuk beban kerja yang memproses kumpulan data besar dalam memori

## Praktik terbaik
<a name="best-practices"></a>

### Pedoman pemilihan pekerja
<a name="worker-selection-guidelines"></a>

1. **Mulailah dengan pekerja standar** (G.1X, G.2X) untuk sebagian besar beban kerja

1. **Gunakan pekerja R** saat sering mengalami out-of-memory kesalahan atau beban kerja dengan operasi intensif memori seperti caching, shuffling, dan agregasi

1. **Pertimbangkan G.12X/G.16X** untuk beban kerja intensif komputasi yang membutuhkan sumber daya maksimum

1. **Memperhitungkan kendala kapasitas** saat menggunakan tipe pekerja baru dalam alur kerja yang sensitif terhadap waktu

### Optimalisasi kinerja
<a name="performance-optimization"></a>
+ Pantau CloudWatch metrik untuk memahami pemanfaatan sumber daya
+ Gunakan jumlah pekerja yang sesuai berdasarkan ukuran dan kompleksitas data
+ Pertimbangkan strategi partisi data untuk mengoptimalkan efisiensi pekerja

# Lowongan kerja Streaming ETL di AWS Glue
<a name="add-job-streaming"></a>

Anda dapat membuat tugas extract, transform, and load (ETL) yang berjalan terus menerus, mengkonsumsi data dari sumber streaming seperti Amazon Kinesis Data Streams, Apache Kafka, dan Amazon Managed Streaming for Apache Kafka (Amazon MSK). Tugas tersebut membersihkan dan mengubah data, dan kemudian memuat hasil ke danau data Amazon S3 atau penyimpanan data JDBC.

Selain itu, Anda dapat menghasilkan data untuk Amazon Kinesis Data Streams. Fitur ini hanya tersedia saat menulis AWS Glue skrip. Untuk informasi selengkapnya, lihat [Koneksi Kinesis](aws-glue-programming-etl-connect-kinesis-home.md). 

Secara default, AWS Glue memproses dan menulis data dalam jendela 100-detik. Hal ini memungkinkan data diproses secara efisien dan memungkinkan agregasi untuk dilakukan pada data yang tiba lebih lambat dari yang diharapkan. Anda dapat memodifikasi ukuran jendela ini untuk meningkatkan ketepatan waktu atau akurasi agregasi. Tugas streaming AWS Glue menggunakan pos pemeriksaan alih-alih bookmark tugas untuk melacak data yang telah dibaca.

**catatan**  
AWS Glue mengenakan biaya per jam untuk tugas ETL streaming saat mereka berjalan.

Video ini membahas tantangan biaya streaming ETL, dan fitur hemat biaya di. AWS Glue

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/6ggTFOtfUxU/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/6ggTFOtfUxU)


Membuat tugas ETL streaming melibatkan langkah-langkah berikut:

1. Untuk sumber streaming Apache Kafka, buatlah sebuah koneksi AWS Glue ke sumber Kafka atau klaster Amazon MSK.

1. Secara manual, buat tabel Katalog Data untuk sumber streaming.

1. Buatlah sebuah tugas ETL untuk sumber data streaming. Tentukan properti tugas spesifik-streaming, dan sediakan skrip Anda sendiri atau, secara opsional, modifikasi skrip yang dihasilkan.

Untuk informasi selengkapnya, lihat [Streaming ETL di AWS Glue](components-overview.md#streaming-etl-intro).

Saat membuat tugas ETL streaming untuk Amazon Kinesis Data Streams, Anda tidak perlu membuat koneksi AWS Glue. Namun demikian, jika ada koneksi yang dilampirkan pada tugas ETL streaming AWS Glue yang memiliki Kinesis Data Streams sebagai sumber, maka titik akhir virtual private cloud (VPC) untuk Kinesis diperlukan. Untuk informasi selengkapnya, lihat [Membuat titik akhir antarmuka](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) dalam *Panduan Pengguna Amazon VPC*. Saat menentukan pengaliran Amazon Kinesis Data Streams di akun lain, Anda harus menyiapkan peran dan kebijakan untuk memungkinkan akses lintas akun. Untuk informasi selengkapnya, lihat [ Contoh: Baca Dari Pengaliran Kinesis di Akun Berbeda](https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html).

AWS Gluestreaming pekerjaan ETL dapat mendeteksi data terkompresi secara otomatis, mendekompresi data streaming secara transparan, melakukan transformasi biasa pada sumber input, dan memuat ke penyimpanan output. 

AWS Gluemendukung dekompresi otomatis untuk jenis kompresi berikut yang diberikan format input:


| Jenis kompresi | Berkas Avro | Tanggal Avro | JSON | CSV | Grok | 
| --- | --- | --- | --- | --- | --- | 
| BZIP2 | Ya | Ya | Ya | Ya | Ya | 
| GZIP | Tidak | Ya | Ya | Ya | Ya | 
| SNAPPY | Ya (Snappy mentah) | Ya (berbingkai Snappy) | Ya (berbingkai Snappy) | Ya (berbingkai Snappy) | Ya (berbingkai Snappy) | 
| XZ | Ya | Ya | Ya | Ya | Ya | 
| ZSTD | Ya | Tidak | Tidak | Tidak | Tidak | 
| DEFLATE | Ya | Ya | Ya | Ya | Ya | 

**Topics**
+ [Membuat AWS Glue koneksi untuk aliran data Apache Kafka](#create-conn-streaming)
+ [Membuat tabel Katalog Data untuk sumber streaming](#create-table-streaming)
+ [Catatan dan batasan untuk sumber streaming Avro](#streaming-avro-notes)
+ [Menerapkan pola grok ke sumber streaming](#create-table-streaming-grok)
+ [Mendefinisikan properti pekerjaan untuk pekerjaan ETL streaming](#create-job-streaming-properties)
+ [Streaming catatan dan batasan ETL](#create-job-streaming-restrictions)

## Membuat AWS Glue koneksi untuk aliran data Apache Kafka
<a name="create-conn-streaming"></a>

Untuk membaca dari pengaliran Apache Kafka, Anda harus membuat sebuah koneksi AWS Glue. 

**Untuk membuat sebuah koneksi AWS Glue untuk sumber Kafka (konsol)**

1. Buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Pada panel navigasi, di **Katalog data**, pilih **Koneksi**.

1. Pilih **Tambahkan koneksi**, dan pada halaman **Siapkan properti koneksi Anda**, masukkan nama koneksi.
**catatan**  
Untuk informasi selengkapnya tentang menentukan properti koneksi, lihat [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections). .

1. Untuk **Connection type** (Tipe koneksi), pilih **Kafka**.

1. Untuk **server bootstrap Kafka URLs**, masukkan host dan nomor port untuk broker bootstrap untuk cluster MSK Amazon atau cluster Apache Kafka Anda. Gunakan hanya titik akhir Keamanan Lapisan Pengangkutan (TLS) untuk membangun koneksi awal ke klaster Kafka. Tidak mendukung titik akhir teks biasa.

   Berikut ini adalah contoh daftar pasangan nama host dan nomor port untuk klaster Amazon MSK.

   ```
   myserver1.kafka.us-east-1.amazonaws.com:9094,myserver2.kafka.us-east-1.amazonaws.com:9094,
   myserver3.kafka.us-east-1.amazonaws.com:9094
   ```

   Untuk informasi selengkapnya tentang mendapatkan informasi broker bootstrap, lihat [Mendapatkan Bootstrap Broker untuk Klaster Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) dalam *Panduan Developer Amazon Managed Streaming for Apache Kafka*. 

1. Jika Anda ingin koneksi yang aman ke sumber data Kafka, pilih **Memerlukan koneksi SSL**, dan untuk **Lokasi sertifikat CA privat Kafka**, masukkan path Amazon S3 yang valid ke sebuah sertifikat SSL khusus.

   Untuk koneksi SSL ke Kafka dikelola sendiri, sertifikat khusus tersebut bersifat wajib. Ini bersifat opsional untuk Amazon MSK.

   Untuk informasi selengkapnya tentang menentukan sebuah sertifikat khusus untuk Kafka, lihat [AWS Glue Properti koneksi SSL](connection-properties.md#connection-properties-SSL).

1. Gunakan AWS Glue Studio atau AWS CLI untuk menentukan metode otentikasi klien Kafka. Untuk mengakses AWS Glue Studio pilih **AWS Glue**dari menu **ETL** di panel navigasi kiri.

   Untuk informasi selengkapnya tentang metode otentikasi klien Kafka, lihat. [AWS GlueProperti koneksi Kafka untuk otentikasi klien](#connection-properties-kafka-client-auth)

1. Secara opsional, masukkan deskripsi, dan kemudian pilih **Selanjutnya**.

1. Untuk klaster Amazon MSK, tentukan virtual private cloud (VPC), subnet, dan grup keamanan dari klaster tersebut. Informasi VPC bersifat opsional untuk Kafka yang dikelola sendiri.

1. Pilih **Selanjutnya** untuk meninjau semua properti koneksi, dan kemudian pilih **Selesai**.

Untuk informasi selengkapnya tentang koneksi AWS Glue, lihat [Menghubungkan ke data](glue-connections.md).

### AWS GlueProperti koneksi Kafka untuk otentikasi klien
<a name="connection-properties-kafka-client-auth"></a>

**Otentikasi SASL/GSSAPI (Kerberos)**  
Memilih metode otentikasi ini akan memungkinkan Anda untuk menentukan properti Kerberos.

**Kerberos Keytab**  
Pilih lokasi file tab tombol. Keytab menyimpan kunci jangka panjang untuk satu atau lebih prinsipal. Untuk informasi selengkapnya, lihat [Dokumentasi MIT Kerberos: Keytab](https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html). 

**Kerberos berkas krb5.conf**  
Pilih file krb5.conf. Ini berisi ranah default (jaringan logis, mirip dengan domain, yang mendefinisikan sekelompok sistem di bawah KDC yang sama) dan lokasi server KDC. Untuk informasi lebih lanjut, lihat [Dokumentasi MIT Kerberos:](https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html) krb5.conf. 

**Kepala sekolah Kerberos dan nama layanan Kerberos**  
Masukkan nama kepala dan layanan Kerberos. Untuk informasi lebih lanjut, lihat [Dokumentasi MIT Kerberos: Kepala sekolah Kerberos](https://web.mit.edu/kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-user/What-is-a-Kerberos-Principal_003f.html). 

**Otentikasi SASL/SCRAM-SHA-512**  
 Memilih metode otentikasi ini akan memungkinkan Anda untuk menentukan kredensyal otentikasi. 

**AWS Secrets Manager**  
Cari token Anda di kotak Pencarian dengan mengetikkan nama atau ARN. 

**Nama pengguna dan kata sandi penyedia secara langsung**  
Cari token Anda di kotak Pencarian dengan mengetikkan nama atau ARN. 

**Otentikasi klien SSL**  
Memilih metode otentikasi ini memungkinkan Anda untuk memilih lokasi keystore klien Kafka dengan menjelajahi Amazon S3. Secara opsional, Anda dapat memasukkan kata sandi keystore klien Kafka dan kata sandi kunci klien Kafka. 

**Autentikasi IAM**  
Metode otentikasi ini tidak memerlukan spesifikasi tambahan dan hanya berlaku jika sumber Streaming adalah MSK Kafka. 

**Otentikasi SASL/PLAIN**  
Memilih metode otentikasi ini memungkinkan Anda menentukan kredensyal otentikasi. 

## Membuat tabel Katalog Data untuk sumber streaming
<a name="create-table-streaming"></a>

Tabel Katalog Data yang menentukan properti aliran data sumber, termasuk skema data dapat dibuat secara manual untuk sumber streaming. Tabel ini digunakan sebagai sumber data untuk tugas ETL streaming. 

Jika Anda tidak tahu skema data dalam aliran data sumber, maka Anda dapat membuat tabel tanpa skema. Kemudian ketika Anda membuat tugas ETL streaming, Anda dapat mengaktifkan fungsi deteksi skema AWS Glue. AWS Glue akan menentukan skema dari data streaming.

Gunakan [AWS Gluekonsol](https://console.aws.amazon.com/glue/), AWS Command Line Interface (AWS CLI), atau AWS Glue API untuk membuat tabel. Untuk informasi selengkapnya tentang cara membuat sebuah tabel secara manual dengan konsol AWS Glue, lihat [Membuat tabel](tables-described.md).

**catatan**  
Anda tidak dapat menggunakan AWS Lake Formation konsol untuk membuat tabel; Anda harus menggunakan AWS Glue konsol.

Juga mempertimbangkan informasi berikut untuk sumber streaming dalam format Avro atau untuk data log yang dapat Anda terapkan pola Grok untuknya. 
+ [Catatan dan batasan untuk sumber streaming Avro](#streaming-avro-notes)
+ [Menerapkan pola grok ke sumber streaming](#create-table-streaming-grok)

**Topics**
+ [Sumber data Kinesis](#kinesis-source)
+ [Sumber data Kafka](#kafka-source)
+ [AWS GlueSumber tabel Schema Registry](#schema-registry-table)

### Sumber data Kinesis
<a name="kinesis-source"></a>

Saat membuat tabel, atur properti ETL streaming berikut (konsol).

**Jenis Sumber**  
**Kinesis**

**Untuk sebuah sumber Kinesis pada akun yang sama:**    
**Region**  
 AWS Wilayah tempat layanan Amazon Kinesis Data Streams berada. Nama pengaliran Wilayah dan Kinesis bersama-sama diterjemahkan ke Stream ARN.  
Contoh: https://kinesis.us-east-1.amazonaws.com  
**Nama pengaliran Kinesis**  
Nama pengaliran seperti yang dijelaskan dalam [Membuat Pengaliran](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-create-stream.html) dalam* Panduan Developer Amazon Kinesis Data Streams*.

**Untuk sumber Kinesis di akun lain, lihat [contoh ini](https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html) untuk menyiapkan peran dan kebijakan untuk memungkinkan akses lintas akun. Konfigurasikan pengaturan ini:**    
**ARN Streaming**  
ARN dari pengaliran data Kinesis dimana konsumen terdaftar. Untuk informasi selengkapnya, lihat [Amazon Resource Names (ARNs) dan Ruang Nama AWS Layanan di bagian](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). *Referensi Umum AWS*  
**ARN Peran yang Diambil**  
Amazon Resource Name (ARN) dari peran yang diambil.  
**Nama sesi (opsional)**  
Sebuah pengenal untuk sesi peran yang diambil.  
Gunakan nama sesi peran untuk mengidentifikasi sebuah sesi secara unik ketika peran yang sama diambil oleh prinsipal utama yang berbeda atau untuk alasan yang berbeda. Dalam skenario lintas akun, nama sesi peran dapat dilihat, dan dapat dicatat oleh akun yang memiliki peran tersebut. Nama sesi peran juga digunakan dalam ARN dari prinsipal utama peran yang diambil. Ini berarti bahwa permintaan API lintas akun berikutnya yang menggunakan kredensyal keamanan sementara akan mengekspos nama sesi peran ke akun eksternal di log mereka. AWS CloudTrail 

**Mengkonfigurasi properti ETL streaming untuk Amazon Kinesis Data Streams (API AWS Glue atau AWS CLI)**
+ Untuk menyiapkan properti ETL streaming untuk sebuah sumber Kinesis di akun yang sama, tentukan parameter `streamName` dan `endpointUrl` dalam struktur `StorageDescriptor` dari operasi API `CreateTable` atau fungsi perintah CLI `create_table`.

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamName": "sample-stream",
  		"endpointUrl": "https://kinesis.us-east-1.amazonaws.com"
  	}
  	...
  }
  ```

  Atau, tentukan `streamARN`.  
**Example**  

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream"
  	}
  	...
  }
  ```
+ Untuk menyiapkan properti ETL streaming untuk sebuah sumber Kinesis di akun lain, tentukan parameter `streamARN`, `awsSTSRoleARN` dan `awsSTSSessionName` (opsional) dalam struktur `StorageDescriptor` dari operasi API `CreateTable` atau fungsi perintah CLI `create_table`.

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream",
  		"awsSTSRoleARN": "arn:aws:iam::123456789:role/sample-assume-role-arn",
  		"awsSTSSessionName": "optional-session"
  	}
  	...
  }
  ```

### Sumber data Kafka
<a name="kafka-source"></a>

Saat membuat tabel, atur properti ETL streaming berikut (konsol).

**Jenis Sumber**  
 **Kafka**

**Untuk sebuah sumber Kafka:**    
**Nama topik**  
Nama topik sebagaimana ditentukan dalam Kafka.  
**Koneksi**  
Sebuah koneksi AWS Glue yang me-referensi sumber Kafka, seperti yang dijelaskan dalam [Membuat AWS Glue koneksi untuk aliran data Apache Kafka](#create-conn-streaming).

### AWS GlueSumber tabel Schema Registry
<a name="schema-registry-table"></a>

Untuk menggunakan AWS Glue Schema Registry untuk pekerjaan streaming, ikuti petunjuk di [Kasus penggunaan: AWS Glue Data Catalog](schema-registry-integrations.md#schema-registry-integrations-aws-glue-data-catalog) untuk membuat atau memperbarui tabel Schema Registry.

Saat ini, AWS Glue Streaming hanya mendukung format Glue Schema Registry Avro dengan inferensi skema disetel ke. `false`

## Catatan dan batasan untuk sumber streaming Avro
<a name="streaming-avro-notes"></a>

Catatan dan pembatasan berikut berlaku untuk sumber streaming dalam format Avro:
+ Ketika skema deteksi diaktifkan, skema Avro tersebut harus disertakan dalam muatan. Saat dimatikan, muatan hanya berisi data saja.
+ Beberapa tipe data Avro tidak didukung dalam bingkai dinamis. Anda tidak dapat menentukan tipe data ini ketika mendefinisikan skema di halaman **Menentukan skema** di penuntun membuat tabel di konsol AWS Glue. Selama deteksi skema, jenis yang tidak didukung dalam skema Avro dikonversi ke jenis yang didukung sebagai berikut:
  + `EnumType => StringType`
  + `FixedType => BinaryType`
  + `UnionType => StructType`
+ Jika Anda menentukan skema tabel menggunakan halaman **Menentukan skema** di konsol, maka jenis elemen akar tersirat untuk skema adalah `record`. Jika Anda ingin jenis elemen akar selain `record`, misalnya `array` atau `map`, Anda tidak dapat menentukan skema menggunakan halaman **Menentukan skema**. Sebaliknya Anda harus melewatkan halaman itu dan menentukan skema baik sebagai sebuah properti tabel atau dalam skrip ETL.
  + Untuk menentukan skema di properti tabel, selesaikan penuntun membuat tabel, edit detail tabel, dan tambahkan pasangan nilai-kunci baru pada **Properti tabel**. Gunakan kunci `avroSchema`, dan masukkan objek skema JSON untuk nilai, seperti yang ditunjukkan pada tangkapan layar berikut.  
![\[Pada judul Properti tabel, ada dua kolom bidang teks. Judul kolom sebelah kiri adalah Kunci, dan judul kolom sebelah kanan adalah Nilai. key/value Pasangan di baris pertama classification/avro. The key/value berpasangan di baris kedua adalah AvroSchema/ {"type” :"array”, "items” :"string "}.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/table_properties_avro.png)
  + Untuk menentukan skema dalam skrip ETL, modifikasi pernyataan tugas `datasource0` dan tambahkan kunci `avroSchema` ke argumen `additional_options`, seperti yang ditunjukkan dalam contoh Python dan Scala berikut.

------
#### [ Python ]

    ```
    SCHEMA_STRING = ‘{"type":"array","items":"string"}’
    datasource0 = glueContext.create_data_frame.from_catalog(database = "database", table_name = "table_name", transformation_ctx = "datasource0", additional_options = {"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema": SCHEMA_STRING})
    ```

------
#### [ Scala ]

    ```
    val SCHEMA_STRING = """{"type":"array","items":"string"}"""
    val datasource0 = glueContext.getCatalogSource(database = "database", tableName = "table_name", redshiftTmpDir = "", transformationContext = "datasource0", additionalOptions = JsonOptions(s"""{"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema":"$SCHEMA_STRING"}""")).getDataFrame()
    ```

------

## Menerapkan pola grok ke sumber streaming
<a name="create-table-streaming-grok"></a>

Anda dapat membuat sebuah tugas ETL streaming untuk sumber data log dan menggunakan pola Grok untuk mengkonversi log menjadi data terstruktur. Tugas ETL tersebut kemudian memproses data sebagai sebuah sumber data terstruktur. Anda menentukan pola Grok untuk diterapkan saat Anda membuat tabel Katalog Data untuk sumber streaming.

Untuk informasi tentang pola Grok dan nilai-nilai string pola kustom, lihat [Menulis pengklasifikasi kustom grok](custom-classifier.md#custom-classifier-grok).

**Untuk menambahkan pola grok ke tabel Katalog Data (konsol)**
+ Gunakan penuntun membuat tabel, dan buatlah tabel dengan parameter yang ditentukan dalam [Membuat tabel Katalog Data untuk sumber streaming](#create-table-streaming). Tentukan format data sebagai Grok, isi **Pola grok**, dan secara opsional, Anda bisa memilih untuk menambahkan pola penyesuaian pada **Pola kustom (opsional)**.  
![\[*\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/grok-data-format-create-table.png)

  Tekan **Enter** setelah setiap pola kustom.

**Untuk menambahkan pola grok ke tabel Katalog Data (AWS GlueAPI atau AWS CLI)**
+ Tambahkan parameter `GrokPattern` dan, secara opsional, parameter `CustomPatterns` ke operasi API `CreateTable` atau fungsi perintah CLI `create_table`.

  ```
   "Parameters": {
  ...
      "grokPattern": "string",
      "grokCustomPatterns": "string",
  ...
  },
  ```

  Ekspresikan `grokCustomPatterns` sebagai string dan gunakan "\$1n" sebagai pemisah antara pola.

  Berikut ini adalah contoh cara menentukan parameter ini.  
**Example**  

  ```
  "parameters": {
  ...
      "grokPattern": "%{USERNAME:username} %{DIGIT:digit:int}",
      "grokCustomPatterns": "digit \d",
  ...
  }
  ```

## Mendefinisikan properti pekerjaan untuk pekerjaan ETL streaming
<a name="create-job-streaming-properties"></a>

Bila Anda menentukan tugas ETL streaming di konsol AWS Glue, berikan properti spesifik-pengaliran berikut ini. Untuk deskripsi tentang properti tugas tambahan, lihat [Mendefinisikan properti pekerjaan untuk pekerjaan Spark](add-job.md#create-job). 

**IAM Role**  
Tentukan peran AWS Identity and Access Management (IAM) yang digunakan untuk otorisasi sumber daya yang digunakan untuk menjalankan pekerjaan, mengakses sumber streaming, dan mengakses penyimpanan data target.  
Untuk akses ke Amazon Kinesis Data Streams, `AmazonKinesisFullAccess` AWS lampirkan kebijakan terkelola ke peran, atau lampirkan kebijakan IAM serupa yang mengizinkan akses yang lebih halus. Untuk kebijakan sampel, lihat [Mengontrol Akses ke Amazon Kinesis Data Streams Menggunakan IAM](https://docs.aws.amazon.com/streams/latest/dev/controlling-access.html).  
Untuk informasi selengkapnya tentang izin menjalankan tugas di AWS Glue, lihat [Manajemen identitas dan akses untuk AWS Glue](security-iam.md).

**Tipe**  
Pilih **Spark streaming**.

**Versi AWS Glue**  
Versi AWS Glue menentukan versi Apache Spark, dan Python atau Scala, yang tersedia untuk tugas. Pilih pilihan yang menentukan versi Python atau Scala yang tersedia untuk pekerjaan itu. AWS Glue Versi 2.0 dengan support Python 3 adalah default untuk streaming tugas ETL.

**Periode pemeliharaan**  
Menentukan jendela di mana pekerjaan streaming dapat dimulai ulang. Lihat [Jendela pemeliharaan untuk AWS Glue Streaming](glue-streaming-maintenance.md).

**Tugas habis waktu**  
Opsional, masukkan durasi dalam menit. Nilai defaultnya kosong.  
+ Pekerjaan streaming harus memiliki nilai batas waktu kurang dari 7 hari atau 10080 menit.
+ Ketika nilai dibiarkan kosong, pekerjaan akan dimulai ulang setelah 7 hari, jika Anda belum menyiapkan jendela pemeliharaan. Jika Anda telah menyiapkan jendela pemeliharaan, pekerjaan akan dimulai kembali selama jendela pemeliharaan setelah 7 hari.

**Sumber data**  
Tentukan tabel yang Anda buat di [Membuat tabel Katalog Data untuk sumber streaming](#create-table-streaming).

**Target data**  
Lakukan salah satu tindakan berikut:  
+ Pilih **Buat tabel di target data Anda** dan tentukan properti target data berikut.  
**Penyimpanan data**  
Pilih Amazon S3 atau JDBC.  
**Format**  
Pilih format apa saja. Semua didukung untuk streaming.
+ Pilih **Gunakan tabel dalam katalog data dan perbarui target data**, dan pilih sebuah tabel untuk menyimpan data JDBC.

**Definisi skema output**  
Lakukan salah satu tindakan berikut:  
+ Pilih **Secara otomatis mendeteksi skema dari setiap catatan** untuk mengaktifkan deteksi skema. AWS Glue menentukan skema dari data streaming.
+ Pilih **Tentukan skema output untuk semua catatan** untuk menggunakan transformasi Terapkan Pemetaan untuk menentukan skema output.

**Skrip**  
Opsional, berikan skrip Anda sendiri atau modifikasi skrip yang dihasilkan untuk melakukan operasi yang didukung oleh mesin Apache Spark Structured Streaming. Untuk informasi tentang operasi yang tersedia, lihat [Operasi pada streaming DataFrames /Datasets](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets).

## Streaming catatan dan batasan ETL
<a name="create-job-streaming-restrictions"></a>

Ingatlah catatan dan pembatasan berikut:
+ Dekompresi otomatis untuk AWS Glue streaming pekerjaan ETL hanya tersedia untuk jenis kompresi yang didukung. Perhatikan juga hal berikut:
  + Framed Snappy mengacu pada [format pembingkaian](https://github.com/google/snappy/blob/main/framing_format.txt) resmi untuk Snappy.
  + Deflate didukung di Glue versi 3.0, bukan Glue versi 2.0.
+ Bila menggunakan deteksi skema, Anda tidak dapat melakukan penggabungan data streaming.
+ AWS Gluestreaming pekerjaan ETL tidak mendukung tipe data Union untuk AWS Glue Schema Registry dengan format Avro.
+ Skrip ETL Anda dapat menggunakan AWS Glue transformasi bawaan dan transformasi asli ke Apache Spark Structured Streaming. Untuk informasi selengkapnya, lihat [Operasi pada streaming DataFrames /Datasets](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets) di situs web Apache Spark atau. [AWS Glue PySpark mengubah referensi](aws-glue-programming-python-transforms.md)
+ Tugas ETL streaming AWS Glue menggunakan pos pemeriksaan untuk melacak data yang telah dibaca. Oleh karena itu, tugas yang dihentikan dan dimulai-ulang memilih tempat ia pergi di pengaliran. Jika Anda ingin memproses ulang data, maka Anda dapat menghapus folder pos pemeriksaan yang direferensikan dalam skrip.
+ Bookmark Tugas tidak didukung.
+ Untuk menggunakan fitur fan-out yang disempurnakan dari Kinesis Data Streams dalam pekerjaan Anda, konsultasikan. [Menggunakan fan-out yang disempurnakan dalam pekerjaan streaming Kinesis](aws-glue-programming-etl-connect-kinesis-efo.md)
+ Jika Anda menggunakan tabel Katalog Data yang dibuat dari AWS Glue Schema Registry, ketika versi skema baru tersedia, untuk mencerminkan skema baru, Anda perlu melakukan hal berikut:

  1. Hentikan pekerjaan yang terkait dengan tabel.

  1. Perbarui skema untuk tabel Katalog Data.

  1. Mulai ulang pekerjaan yang terkait dengan tabel.

# Rekam pencocokan dengan AWS Lake Formation FindMatches
<a name="machine-learning"></a>

**catatan**  
Pencocokan rekaman saat ini tidak tersedia di Wilayah berikut di AWS Glue konsol: Timur Tengah (UEA), Eropa (Spanyol), Asia Pasifik (Jakarta), dan Eropa (Zurich).

AWS Lake Formation menyediakan kemampuan pembelajaran mesin untuk membuat transformasi khusus untuk membersihkan data Anda. Saat ini ada satu transformasi yang tersedia bernama FindMatches. FindMatchesTransformasi memungkinkan Anda mengidentifikasi duplikat atau pencocokan catatan dalam kumpulan data Anda, bahkan ketika catatan tidak memiliki pengidentifikasi unik umum dan tidak ada bidang yang sama persis. Ini tidak memerlukan penulisan kode apa pun atau mengetahui cara kerja pembelajaran mesin. FindMatches dapat berguna dalam berbagai masalah, seperti: 
+ **Mencocokkan pelanggan**: Menautkan catatan pelanggan di berbagai basis data pelanggan, bahkan ketika banyak bidang pelanggan tidak cocok persis di seluruh basis data (misalnya ejaan nama yang berbeda, perbedaan alamat, data yang hilang atau tidak akurat, dll).
+ **Pencocokan produk**: Mencocokkan produk dalam katalog Anda dengan sumber produk lain, seperti katalog produk dengan katalog pesaing, di mana entri disusun secara berbeda.
+ **Meningkatkan deteksi penipuan**: Mengidentifikasi akun pelanggan duplikat, menentukan kapan akun yang baru dibuat (atau mungkin) cocok untuk pengguna penipuan yang diketahui sebelumnya.
+ **Masalah pencocokan lainnya**: Alamat pencocokan, film, daftar bagian, dll. Secara umum, jika seorang manusia dapat melihat baris database Anda dan menentukan bahwa mereka cocok, ada kemungkinan besar bahwa FindMatches transformasi dapat membantu Anda.

 Anda dapat membuat transformasi ini saat membuat sebuah tugas. Transformasi yang Anda buat didasarkan pada skema penyimpanan data sumber dan contoh data dari kumpulan data sumber yang Anda beri label (kami menyebut proses ini “mengajar” transformasi). Catatan yang Anda beri label harus ada dalam kumpulan data sumber. Dalam proses ini kami membuat file yang Anda beri label dan kemudian mengunggah kembali yang akan dipelajari transformasi dengan cara tertentu. Setelah Anda mengajarkan transformasi Anda, Anda dapat memanggilnya dari AWS Glue pekerjaan berbasis Spark Anda (PySpark atau Scala Spark) dan menggunakannya dalam skrip lain dengan penyimpanan data sumber yang kompatibel. 

 Setelah transformasi dibuat, ia disimpan dalam AWS Glue. Pada konsol AWS Glue, Anda dapat mengelola transformasi yang Anda buat. Di panel navigasi di bawah **Integrasi Data dan ETL**, **Alat klasifikasi data > Pencocokan Rekam**, Anda dapat mengedit dan terus mengajarkan transformasi pembelajaran mesin Anda. Untuk informasi selengkapnya tentang mengelola transformasi pada konsol tersebut, lihat [Bekerja dengan transformasi pembelajaran mesin](console-machine-learning-transforms.md). 

**catatan**  
AWS Glue FindMatches pekerjaan versi 2.0 menggunakan bucket Amazon S3 `aws-glue-temp-<accountID>-<region>` untuk menyimpan file sementara saat transformasi memproses data. Anda dapat menghapus data ini setelah proses selesai, baik secara manual atau dengan menyetel aturan Siklus Hidup Amazon S3.

## Jenis transformasi pembelajaran mesin
<a name="machine-learning-transforms"></a>

Anda dapat membuat transformasi machine learning untuk membersihkan data Anda. Anda dapat memanggil transformasi ini dari skrip ETL Anda. Data Anda berpindah dari transformasi ke transformasi dalam struktur data yang disebut a *DynamicFrame*, yang merupakan ekstensi ke Apache Spark SQL. `DataFrame` `DynamicFrame` tersebut berisi data Anda, dan Anda me-referensi skemanya untuk memproses data Anda.

Jenis transformasi machine learning berikut sudah tersedia:

*Menemukan kecocokan*  
Menemukan duplikat catatan dalam data sumber. Anda mengajarkan transformasi machine learning ini dengan melabelkan set data contoh untuk menunjukkan baris yang cocok. Transformasi machine learning tersebut akan mempelajari baris mana yang seharusnya cocok dengan semakin banyak Anda mengajarinya dengan data contoh berlabel. Tergantung cara Anda mengkonfigurasi transformasi, outputnya adalah salah satu dari berikut ini:  
+ Salinan tabel masukan dan kolom `match_id` yang telah diisi dengan nilai-nilai yang menunjukkan sekumpulan catatan yang cocok. Kolom `match_id` adalah pengenal sebarang. Setiap catatan yang memiliki `match_id` yang sama telah diidentifikasi sebagai kecocokan satu sama lain. Catatan dengan `match_id` berbeda tidak cocok.
+ Salinan tabel masukan dengan duplikat baris dihapus. Jika beberapa duplikat ditemukan, maka catatan dengan kunci primer terendah yang disimpan.

*Temukan kecocokan tambahan*  
Transformasi Find Matches juga dapat dikonfigurasi untuk menemukan kecocokan di seluruh frame yang ada dan inkremental dan mengembalikan sebagai output kolom yang berisi ID unik per grup kecocokan.   
Untuk informasi lebih lanjut, lihat: [Menemukan kecocokan tambahan](machine-learning-incremental-matches.md)

### Menggunakan FindMatches transformasi
<a name="machine-learning-find-matches"></a>

Anda dapat menggunakan transformasi `FindMatches` untuk menemukan catatan duplikat dalam data sumber. Sebuah file pelabelan dihasilkan atau disediakan untuk membantu mengajarkan transformasi.

**catatan**  
Saat ini, `FindMatches` transformasi yang menggunakan kunci enkripsi kustom tidak didukung di Wilayah berikut:  
Asia Pasifik (Osaka) - `ap-northeast-3`

 Untuk memulai FindMatches transformasi, Anda dapat mengikuti langkah-langkah di bawah ini. Untuk contoh yang lebih maju dan terperinci, lihat **AWS Big Data Blog**: [Harmonize data using AWS Glue dan AWS Lake Formation FindMatches ML untuk membangun tampilan pelanggan 360](https://aws.amazon.com/blogs/big-data/harmonize-data-using-aws-glue-and-aws-lake-formation-findmatches-ml-to-build-a-customer-360-view/). 

#### Memulai menggunakan transformasi Find Matches
<a name="machine-learning-find-mathes-workflow"></a>

Ikuti langkah-langkah ini untuk memulai transformasi `FindMatches`:

1. Buat tabel di AWS Glue Data Catalog untuk sumber data yang akan dibersihkan. Untuk informasi tentang cara membuat crawler, lihat [Bekerja dengan Crawler di Konsol AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-crawlers.html).

   Jika data sumber adalah file berbasis teks seperti file nilai yang dipisahkan oleh koma (CSV), pertimbangkan hal berikut: 
   + Simpan file CSV catatan input Anda dan file pelabelan di folder terpisah. Jika tidak, crawler AWS Glue mungkin akan menganggap mereka sebagai beberapa bagian dari tabel yang sama dan membuat beberapa tabel di Katalog Data dengan tidak semestinya. 
   + Kecuali file CSV Anda menyertakan karakter ASCII saja, pastikan bahwa encoding UTF-8 tanpa BOM (byte order mark) digunakan untuk file CSV. Microsoft Excel sering kali menambahkan BOM di awal file CSV UTF-8. Untuk menghapusnya, buka file CSV di editor teks, dan simpan ulang file sebagai **UTF-8 tanpa BOM**. 

1. Pada konsol AWS Glue, buat sebuah tugas, dan pilih transformasi **Temukan kecocokan**.
**penting**  
Tabel sumber data yang Anda pilih untuk tugas tersebut tidak boleh memiliki lebih dari 100 kolom.

1. Sampaikan pada AWS Glue untuk menghasilkan file pelabelan dengan memilih **Buat file pelabelan**. AWS Glue akan mengambil sediaan pertama di grup catatan serupa untuk setiap `labeling_set_id` sehingga Anda dapat meninjau pengelompokan tersebut. Anda memberikan label pada kecocokan yang ada di kolom `label`.
   + Jika Anda sudah memiliki file pelabelan, yaitu contoh catatan yang menunjukkan baris yang cocok, maka unggah file tersebut ke Amazon Simple Storage Service (Amazon S3). Untuk informasi tentang format file pelabelan, lihat [Format file pelabelan](#machine-learning-labeling-file). Lanjutkan ke langkah 4.

1. Unduh file pelabelan dan beri label file tersebut seperti yang diterangkan dalam bagian [Pelabelan](#machine-learning-labeling).

1. Unggah file yang telah diberi label dan telah dikoreksi. AWS Glue menjalankan tugas untuk mengajarkan transformasi bagaimana menemukan kecocokan.

   Halaman daftar **Transformasi Machine Learning**, pilih tab **Riwayat**. Halaman ini menunjukkan kapan AWS Glue melakukan tugas-tugas berikut:
   + **Impor label**
   + **Label ekspor**
   + **Hasilkan label**
   + **Perkirakan kualitas**

1. Untuk membuat transformasi yang lebih baik, Anda dapat secara berulang mengunduh, label, dan mengunggah file yang telah diberi label. Dalam eksekusi awal, lebih banyak catatan mungkin tidak cocok. Tapi AWS Glue akan belajar saat Anda terus mengajarinya dengan memverifikasi file pelabelan.

1. Evaluasi dan setel transformasi Anda dengan mengevaluasi performa dan hasil penemuan kecocokan. Untuk informasi selengkapnya, lihat [Pembelajaran mesin tuning berubah di AWS Glue](add-job-machine-learning-transform-tuning.md).

#### Pelabelan
<a name="machine-learning-labeling"></a>

Saat `FindMatches` menghasilkan file pelabelan, catatan dipilih dari tabel sumber Anda. Berdasarkan pelatihan sebelumnya, `FindMatches` mengidentifikasi catatan paling bernilai untuk dipelajari.

Tindakan *pelabelan* adalah mengedit file pelabelan (sebaiknya gunakan spreadsheet seperti Microsoft Excel) dan menambahkan pengidentifikasi, atau label, ke kolom `label` yang mengidentifikasi kecocokan dan ketidakcocokan catatan. Penting bagi Anda untuk memiliki definisi yang jelas dan konsisten atas kecocokan dalam data sumber Anda. `FindMatches` akan belajar dari catatan mana yang Anda tentukan sebagai kecocokan (atau tidak) dan menggunakan keputusan Anda untuk mempelajari cara menemukan catatan duplikat.

Ketika file pelabelan dibuat oleh `FindMatches`, sekitar 100 catatan yang dihasilkan. 100 catatan ini biasanya dibagi menjadi 10 *set pelabelan*, dimana setiap set pelabelan diidentifikasi berdasarkan `labeling_set_id` yang dihasilkan oleh `FindMatches`. Setiap set pelabelan harus dilihat sebagai tugas pelabelan terpisah independen dari set pelabelan lainnya. Tugas Anda adalah mengidentifikasi kecocokan dan ketidakcocokan catatan dalam setiap set pelabelan.

##### Kiat untuk mengedit file pelabelan dalam spreadsheet
<a name="machine-learning-labeling-tips"></a>

Saat mengedit file pelabelan dalam sebuah aplikasi spreadsheet, pertimbangkan hal berikut:
+ File mungkin tidak terbuka dengan bidang kolom yang diperluas sepenuhnya. Anda mungkin harus memperluas kolom `labeling_set_id` dan `label` untuk melihat konten dalam sel-sel tersebut.
+ Jika kolom kunci primer adalah angka, seperti tipe data `long`, maka spreadsheet mungkin akan menafsirkannya sebagai angka dan mengubah nilai-nya. Nilai kunci ini harus diperlakukan sebagai teks. Untuk memperbaiki masalah ini, format semua sel di kolom kunci primer sebagai **Data teks**.

#### Format file pelabelan
<a name="machine-learning-labeling-file"></a>

File pelabelan yang dihasilkan oleh AWS Glue untuk mengajarkan transformasi `FindMatches` Anda menggunakan format berikut. Jika anda membuat file anda sendiri untuk AWS Glue, file tersebut harus mengikuti format ini juga:
+ File ini adalah file nilai yang dipisahkan koma (CSV). 
+ File ini harus dikodekan dalam `UTF-8`. Jika Anda mengedit file menggunakan Microsoft Windows, file mungkin akan dikodekan dengan `cp1252`.
+ File ini harus berada di lokasi Amazon S3 untuk diberikan ke AWS Glue.
+ Gunakan baris dalam jumlah sedang untuk setiap tugas pelabelan. Disarankan 10–20 baris per tugas, meskipun 2–30 baris per tugas dapat diterima. Tugas yang lebih besar dari 50 baris tidak dianjurkan dan dapat menyebabkan hasil yang buruk atau kegagalan pada sistem.
+ Jika Anda memiliki data yang sudah diberi label yang terdiri dari pasangan catatan berlabel "cocok" atau "tidak cocok", itu tidak apa-apa. Pasangan yang sudah diberi label ini dapat direpresentasikan sebagai set pelabelan ukuran 2. Dalam kasus ini, beri label kedua catatan dengan, misalnya, huruf "A" jika mereka cocok, tetapi beri label catatan satu sebagai "A" dan lainnya sebagai "B" jika mereka tidak cocok.
**catatan**  
 Karena memiliki kolom tambahan, file pelabelan memiliki skema yang berbeda dari file yang berisi data sumber Anda. Tempatkan file pelabelan di folder yang berbeda dari file CSV input transformasi sehingga crawler AWS Glue tidak menganggapnya ketika membuat tabel dalam Katalog Data. Jika tidak, tabel yang dibuat oleh crawler AWS Glue mungkin tidak mewakili data Anda dengan benar. 
+ Dua kolom pertama (`labeling_set_id`, `label`) diperlukan oleh AWS Glue. Kolom yang tersisa harus cocok dengan skema data yang akan diproses.
+ Untuk setiap `labeling_set_id`, Anda mengidentifikasi semua catatan yang cocok dengan menggunakan label yang sama. Sebuah label adalah string unik yang ditempatkan di kolom `label`. Sebaiknya gunakan label yang berisi karakter sederhana, seperti A, B, C, dan sebagainya. Label tersebut peka huruf besar kecil dan dimasukkan dalam kolom `label`.
+ Baris yang berisi `labeling_set_id` yang sama dan label yang sama dipahami untuk diberi label sebagai kecocokan.
+ Baris yang berisi `labeling_set_id` yang sama dan label yang berbeda dipahami untuk diberi label sebagai *bukan* kecocokan
+ Baris yang berisi `labeling_set_id` berbeda dipahami untuk tidak menyampaikan informasi yang mendukung atau bertentangan dengan kecocokan.

  Berikut ini adalah contoh pelabelan data:    
<a name="table-labeling-data"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/machine-learning.html)
+ Dalam contoh di atas kami mengidentifikasi John/Johnny/Jon Doe as being a match and we teach the system that these records do not match Jane Smith. Separately, we teach the system that Richard and Rich Jones are the same person, but that these records are not a match to Sarah Jones/Jones -Walker dan Richie Jones Jr.
+ Seperti yang Anda lihat, ruang lingkup label terbatas pada `labeling_set_id`. Jadi label tidak menyeberangi batas `labeling_set_id`. Sebagai contoh, label "A" dalam `labeling_set_id` 1 tidak memiliki hubungan dengan label "A" di `labeling_set_id` 2.
+ Jika sebuah catatan tidak memiliki kecocokan dalam satu set pelabelan, maka tetapkan label unik padanya. Misalnya, Jane Smith tidak cocok dengan catatan apa pun dalam set pelabelan ABC123, jadi ini adalah satu-satunya catatan dalam set pelabelan dengan label B.
+ Kumpulan pelabelan "GHI678" menunjukkan bahwa set pelabelan dapat terdiri dari hanya dua catatan yang diberi label yang sama untuk menunjukkan bahwa mereka cocok. Demikian pula, "XYZABC" menunjukkan dua catatan yang diberikan label yang berbeda untuk menunjukkan bahwa catatan-catatan tersebut tidak cocok.
+ Perhatikan bahwa kadang-kadang set pelabelan mungkin berisi ketidakcocokan (yaitu, Anda memberikan setiap catatan dalam set pelabelan dengan label yang berbeda) atau set pelabelan mungkin semua "sama" (Anda memberi mereka semua dengan label yang sama). Hal ini tidak apa-apa selama set pelabelan Anda secara kolektif berisi contoh catatan yang "sama" dan tidak "sama" dengan kriteria Anda.

**penting**  
Mengonfirmasi bahwa IAM role yang Anda berikan ke AWS Glue memiliki akses ke bucket Amazon S3 yang berisi file pelabelan. Dengan konvensi, kebijakan AWS Glue memberikan izin ke bucket Amazon S3 atau folder yang namanya memiliki prefiks **aws-glue-**. Jika file pelabelan Anda berada di lokasi yang berbeda, tambahkan izin ke lokasi tersebut dalam IAM role.

# Pembelajaran mesin tuning berubah di AWS Glue
<a name="add-job-machine-learning-transform-tuning"></a>

Anda dapat menyetel transformasi machine learning Anda di AWS Glue untuk meningkatkan hasil tugas pembersihan data Anda untuk memenuhi tujuan Anda. Untuk meningkatkan transformasi Anda, Anda dapat mengajarinya dengan menghasilkan set pelabelan, menambahkan label, dan kemudian mengulangi langkah-langkah ini beberapa kali sampai Anda mendapatkan hasil yang diinginkan. Anda juga dapat menyetel dengan mengubah beberapa parameter machine learning. 

Untuk informasi selengkapnya tentang transformasi machine learning, lihat [Rekam pencocokan dengan AWS Lake Formation FindMatches](machine-learning.md).

**Topics**
+ [Pengukuran pembelajaran mesin](machine-learning-terminology.md)
+ [Memutuskan antara presisi dan mengingat](machine-learning-precision-recall-tradeoff.md)
+ [Memutuskan Antara Akurasi dan Biaya](machine-learning-accuracy-cost-tradeoff.md)
+ [Memperkirakan kualitas pertandingan menggunakan skor kepercayaan pertandingan](match-scoring.md)
+ [Mengajarkan transformasi Find Matches](machine-learning-teaching.md)

# Pengukuran pembelajaran mesin
<a name="machine-learning-terminology"></a>

Untuk memahami pengukuran yang digunakan untuk menyetel transformasi machine learning Anda, Anda harus terbiasa dengan terminologi berikut:

**Benar positif (TP)**  
Sebuah kecocokan dalam data yang ditemukan dengan benar oleh transformasi, kadang-kadang disebut *temuan*.

**Benar negatif (TN)**  
Sebuah ketidakcocokan dalam data yang dengan benar ditolak oleh transformasi.

**Positif palsu (FP)**  
Sebuah ketidakcocokan dalam data yang keliru diklasifikasikan sebagai kecocokan, kadang-kadang disebut *alarm palsu*.

**Negatif palsu (FN)**  
Sebuah kecocokan dalam data yang tidak ditemukan oleh transformasi, kadang-kadang disebut *meleset*.

Untuk informasi lebih lanjut tentang terminologi yang digunakan dalam machine learning, lihat [matriks kebingungan](https://en.wikipedia.org/wiki/Confusion_matrix) di Wikipedia.

Untuk menyetel transformasi machine learning Anda, Anda dapat mengubah nilai pengukuran berikut di **Properti lanjutan** dari transformasi tersebut.
+ **Precision** mengukur seberapa baik transformasi menemukan benar positif di antara jumlah total catatan yang diidentifikasi sebagai positif (benar positif dan positif palsu). Untuk informasi selengkapnya, lihat [Precision dan recall](https://en.wikipedia.org/wiki/Precision_and_recall) di Wikipedia.
+ **Recall** mengukur seberapa baik transformasi menemukan benar positif dari total catatan dalam data sumber. Untuk informasi selengkapnya, lihat [Precision dan recall](https://en.wikipedia.org/wiki/Precision_and_recall) di Wikipedia.
+ **Akurasi ** mengukur seberapa baik transformasi menemukan benar positif dan benar negatif. Peningkatan akurasi memerlukan lebih banyak sumber daya dan biaya mesin. Tetapi, itu juga menghasilkan peningkatan recall. Untuk informasi selengkapnya, lihat [Accuracy dan precision](https://en.wikipedia.org/wiki/Accuracy_and_precision#In_information_systems) di Wikipedia.
+ **Biaya** mengukur berapa banyak sumber daya komputasi (dan uang) yang digunakan untuk menjalankan transformasi.

# Memutuskan antara presisi dan mengingat
<a name="machine-learning-precision-recall-tradeoff"></a>

Setiap transformasi `FindMatches` berisi parameter `precision-recall`. Anda menggunakan parameter tersebut untuk menentukan salah satu hal berikut ini:
+ Jika Anda lebih peduli tentang transformasi yang keliru melaporkan bahwa dua catatan cocok ketika mereka sebenarnya tidak cocok, maka Anda harus menekankan pada *precision*. 
+ Jika Anda lebih peduli tentang transformasi yang gagal untuk mendeteksi catatan yang sebenarnya cocok, maka Anda harus menekankan pada *recall*.

Anda dapat melakukan trade-off ini di konsol AWS Glue atau menggunakan operasi API machine learning AWS Glue.

**Kapan harus mendukung presisi**  
Dukung precision jika Anda lebih peduli tentang risiko jika `FindMatches` menghasilkan sepasang catatan yang cocok ketika mereka sebenarnya tidak cocok. Untuk mendukung precision, pilih nilai trade-off dari precision-recall yang *lebih tinggi*. Dengan nilai yang lebih tinggi, transformasi `FindMatches` akan membutuhkan lebih banyak bukti untuk memutuskan bahwa sepasang catatan harus dicocokkan. Transformasi disetel untuk cenderung ke arah yang mengatakan bahwa catatan tidak cocok.

Misalnya, bayangkan bahwa Anda menggunakan `FindMatches` untuk mendeteksi item duplikat dalam katalog video, dan Anda memberikan nilai precision-recall yang lebih tinggi untuk transformasi tersebut. Jika transformasi Anda salah mendeteksi bahwa *Star Wars: A New Hope* adalah sama dengan *Star Wars: The Empire Strikes Back*, maka seorang pelanggan yang ingin *A New Hope* mungkin ditampilkan *The Empire Strikes Back*. Ini akan menjadi pengalaman pelanggan yang buruk. 

Namun, jika transformasi tersebut gagal untuk mendeteksi bahwa *Star Wars: A New Hope* dan *Star Wars: Episode IV—A New Hope* adalah item yang sama, maka pelanggan mungkin bingung pada awalnya tapi mungkin akhirnya mengenali mereka sebagai video yang sama. Hal itu akan menjadi kesalahan, tapi tidak seburuk skenario sebelumnya.

**Kapan harus mengingat kembali**  
Dukung recall jika Anda lebih peduli tentang risiko yang diakibatkan transformasi `FindMatches` jika ia gagal untuk mendeteksi sepasang catatan yang sebenarnya cocok. Untuk mendukung recall, pilih nilai trade-off dari precision-recall menjadi *lebih rendah*. Dengan nilai yang lebih rendah, transformasi `FindMatches` akan membutuhkan lebih sedikit bukti untuk memutuskan bahwa sepasang catatan harus dicocokkan. Transformasi disetel untuk cenderung ke arah yang mengatakan bahwa catatan cocok.

Sebagai contoh, hal ini mungkin menjadi prioritas untuk organisasi keamanan. Misalkan Anda mencocokkan pelanggan terhadap daftar penipu yang sudah dikenal, dan penting untuk menentukan apakah seorang pelanggan adalah seorang penipu. Anda menggunakan `FindMatches` untuk mencocokkan daftar penipu dengan daftar pelanggan. Setiap kali `FindMatches` mendeteksi kecocokan antara dua daftar tersebut, maka auditor manusia ditugaskan untuk memverifikasi bahwa orang tersebut, pada kenyataannya, adalah seorang penipu. Organisasi Anda mungkin lebih memilih untuk memilih recall dari pada precision. Dengan kata lain, Anda lebih suka membuat auditor meninjau dan menolak secara manual beberapa kasus ketika pelanggan tersebut bukan seorang penipu daripada gagal untuk mengidentifikasi bahwa seorang pelanggan, pada kenyataannya, ada dalam daftar penipu.

**Bagaimana mendukung presisi dan ingatan**  
Cara terbaik untuk meningkatkan precision dan recall adalah dengan memberi labeli pada lebih banyak data. Saat Anda melabeli lebih banyak data, maka keakuratan transformasi `FindMatches` secara keseluruhan meningkat, sehingga hal itu juga meningkatkan precision dan recall. Namun demikian, bahkan dengan transformasi yang paling akurat sekalipun, selalu ada area abu-abu di mana Anda perlu bereksperimen dengan mendukung precision atau recall, atau memilih nilai di tengah. 

# Memutuskan Antara Akurasi dan Biaya
<a name="machine-learning-accuracy-cost-tradeoff"></a>

Setiap transformasi `FindMatches` berisi sebuah parameter `accuracy-cost`. Anda dapat menggunakan parameter tersebut untuk menentukan salah satu hal berikut ini:
+ Jika Anda lebih peduli dengan transformasi yang secara akurat melaporkan bahwa dua catatan cocok, maka Anda harus menekankan pada *accuracy*.
+ Jika Anda lebih peduli dengan biaya atau kecepatan menjalankan transformasi, maka Anda harus menekankan pada *biaya lebih rendah*.

Anda dapat melakukan trade-off ini di konsol AWS Glue atau menggunakan operasi API machine learning AWS Glue.

**Kapan harus mendukung akurasi**  
Dukung accuracy jika Anda lebih peduli tentang risiko yang diakibatkan `find matches` jika hasilnya tidak akan berisi kecocokan. Untuk mendukung accuracy, pilih nilai trade-off accuracy-cost yang *lebih tinggi*. Dengan nilai yang lebih tinggi, transformasi `FindMatches` memerlukan lebih banyak waktu untuk melakukan pencarian yang lebih menyeluruh untuk melakukan pencocokan catatan dengan benar. Perhatikan bahwa parameter ini tidak mengurangi kemungkinan keliru memanggil pasangan catatan yang tidak cocok sebagai pasangan yang cocok. Transformasi disetel untuk bias ke arah menghabiskan lebih banyak waktu untuk menemukan kecocokan.

**Kapan harus mendukung biaya**  
Dukung cost jika Anda lebih peduli tentang biaya menjalankan transformasi `find matches` dan kurang peduli tentang berapa banyak kecocokan yang ditemukan. Untuk mendukung cost, pilih nilai trade-off dari accuracy-cost yang *lebih rendah*. Dengan nilai yang lebih rendah, transformasi `FindMatches` memerlukan lebih sedikit sumber daya untuk dijalankan. Transformasi disetel untuk bias ke arah menemukan kecocokan lebih sedikit. Jika hasilnya dapat diterima ketika mendukung biaya yang lebih rendah, gunakan pengaturan ini.

**Bagaimana mendukung akurasi dan biaya yang lebih rendah**  
Dibutuhkan lebih banyak waktu mesin untuk memeriksa lebih banyak pasangan catatan untuk menentukan apakah mereka mungkin pasangan yang cocok. Jika Anda ingin mengurangi biaya tanpa mengurangi kualitas, berikut adalah beberapa langkah yang dapat Anda lakukan: 
+ Hilangkan catatan di sumber data yang tidak Anda pedulikan dalam pencocokan.
+ Hilangkan kolom dari sumber data yang Anda yakin tidak berguna untuk membuat keputusan kecocokan/ketidakcocokan. Cara yang baik untuk memutuskan ini adalah dengan menghilangkan kolom yang menurut Anda tidak mempengaruhi keputusan Anda sendiri tentang apakah satu set catatan adalah “sama.”

# Memperkirakan kualitas pertandingan menggunakan skor kepercayaan pertandingan
<a name="match-scoring"></a>

Skor kepercayaan kecocokan memberikan perkiraan kualitas kecocokan yang ditemukan oleh FindMatches untuk membedakan antara catatan yang cocok di mana model pembelajaran mesin sangat percaya diri, tidak pasti, atau tidak mungkin. Skor kepercayaan pertandingan akan antara 0 dan 1, di mana skor yang lebih tinggi berarti kesamaan yang lebih tinggi. Memeriksa skor kepercayaan kecocokan memungkinkan Anda membedakan antara kelompok kecocokan di mana sistem sangat percaya diri (yang mungkin Anda putuskan untuk digabungkan), kelompok yang sistemnya tidak pasti (yang mungkin Anda putuskan untuk ditinjau oleh manusia), dan cluster yang dianggap tidak mungkin (yang mungkin Anda putuskan untuk ditolak).

Anda mungkin ingin menyesuaikan data latihan Anda dalam situasi di mana Anda melihat skor kepercayaan pertandingan yang tinggi, tetapi tentukan tidak ada pertandingan, atau di mana Anda melihat skor rendah tetapi tentukan ada, pada kenyataannya, pertandingan.

Skor kepercayaan sangat berguna ketika ada kumpulan data industri berukuran besar, di mana tidak mungkin untuk meninjau setiap keputusan. FindMatches 

Skor kepercayaan pertandingan tersedia dalam AWS Glue versi 2.0 atau yang lebih baru.

## Menghasilkan skor kepercayaan pertandingan
<a name="specifying-match-scoring"></a>

Anda dapat menghasilkan skor kepercayaan kecocokan dengan menyetel nilai Boolean `computeMatchConfidenceScores` ke True saat memanggil `FindIncrementalMatches` API `FindMatches` atau.

AWS Gluemenambahkan yang baru `column match_confidence_score` ke output.

## Contoh penilaian pertandingan
<a name="match-scoring-examples"></a>

Misalnya, pertimbangkan catatan yang cocok berikut ini:

**Skor >= 0,9**  
Ringkasan catatan yang cocok:

```
  primary_id  |   match_id  | match_confidence_score

3281355037663    85899345947   0.9823658302132061
1546188247619    85899345947   0.9823658302132061
```

Rincian:

![\[Sebuah contoh tabel rute dengan gateway internet.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/match_score1.png)


Dari contoh ini, kita dapat melihat bahwa dua catatan sangat mirip dan berbagi`display_position`,`primary_name`, dan`street name`. 

**Skor >= 0.8 dan skor <0.9**  
Ringkasan catatan yang cocok:

```
  primary_id  |   match_id  | match_confidence_score

309237680432     85899345928   0.8309852373674638
3590592666790    85899345928   0.8309852373674638
343597390617     85899345928   0.8309852373674638
249108124906     85899345928   0.8309852373674638
463856477937     85899345928   0.8309852373674638
```

Rincian:

![\[Sebuah contoh tabel rute dengan gateway internet.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/match_score2.png)


Dari contoh ini, kita dapat melihat bahwa catatan ini berbagi hal yang sama`primary_name`, dan`country`.

**Skor >= 0.6 dan skor <0.7**  
Ringkasan catatan yang cocok:

```
  primary_id  |   match_id  | match_confidence_score

2164663519676    85899345930   0.6971099896480333
 317827595278    85899345930   0.6971099896480333
 472446424341    85899345930   0.6971099896480333
3118146262932    85899345930   0.6971099896480333
 214748380804    85899345930   0.6971099896480333
```

Rincian:

![\[Sebuah contoh tabel rute dengan gateway internet.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/match_score3.png)


Dari contoh ini, kita dapat melihat bahwa catatan ini hanya berbagi hal yang sama`primary_name`.

Untuk informasi lebih lanjut, lihat:
+ [Langkah 5: Tambahkan dan jalankan pekerjaan dengan transformasi pembelajaran mesin Anda](machine-learning-transform-tutorial.md#ml-transform-tutorial-add-job)
+ PySpark: [FindMatches kelas](aws-glue-api-crawler-pyspark-transforms-findmatches.md)
+ PySpark: [FindIncrementalMatches kelas](aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.md)
+ Scala: [FindMatches kelas](glue-etl-scala-apis-glue-ml-findmatches.md)
+ Scala: [FindIncrementalMatches kelas](glue-etl-scala-apis-glue-ml-findincrementalmatches.md)

# Mengajarkan transformasi Find Matches
<a name="machine-learning-teaching"></a>

Setiap transformasi `FindMatches` harus diajari apa yang harus dianggap kecocokan dan apa yang seharusnya tidak dianggap sebagai kecocokan. Anda mengajarkan transformasi Anda dengan menambahkan label ke sebuah file dan mengunggah pilihan Anda ke AWS Glue. 

Anda dapat mengatur pelabelan ini pada konsol AWS Glue atau menggunakan operasi API machine learning AWS Glue.

**Berapa kali saya harus menambahkan label? Berapa banyak label yang saya butuhkan?**  
Jawaban atas pertanyaan-pertanyaan ini sebagian besar terserah Anda. Anda harus mengevaluasi apakah `FindMatches` memberikan tingkat akurasi yang Anda butuhkan dan apakah menurut Anda upaya melakukan pelabelan ekstra sepadan untuk Anda. Cara terbaik untuk memutuskan hal ini adalah dengan melihat metrik “Precision,” “Recall,” dan “Area di bawah kurva precision-recall” yang dapat Anda hasilkan saat Anda memilih **Estimasi kualitas** pada konsol AWS Glue. Setelah Anda memberikan label pada kumpulan tugas lainnya, jalankan kembali metrik ini dan verifikasi apakah telah ada peningkatan. Jika, setelah memberikan label pada beberapa kumpulan tugas tersebut, Anda tidak melihat peningkatan pada metrik yang Anda fokuskan, maka kualitas transformasi mungkin telah mencapai kualitas tertingginya.

**Mengapa label positif dan negatif sejati dibutuhkan?**  
Transformasi `FindMatches` membutuhkan contoh baik positif dan negatif untuk mempelajari apa yang menurut Anda adalah sebuah kecocokan. Jika Anda melabeli data pelatihan yang dihasilkan oleh `FindMatches` (sebagai contoh, menggunakan opsi **Saya tidak memiliki label**), maka `FindMatches` mencoba untuk menghasilkan satu set “label set id” untuk Anda. Dalam setiap tugas, Anda memberikan “label” yang sama untuk beberapa catatan dan “label” yang berbeda untuk catatan lain. Dengan kata lain, tugas secara umum adalah tidak semua sama atau semua berbeda (tapi tidak apa-apa jika tugas tertentu adalah semua “sama” atau semua “tidak sama”).

Jika Anda mengajari transformasi `FindMatches` Anda menggunakan opsi **Unggah label dari S3**, coba untuk menyertakan kedua contoh kecocokan dan ketidakcocokan. Hanya memiliki satu jenis saja bisa diterima. Label ini membantu Anda membangun transformasi `FindMatches` yang lebih akurat, tetapi Anda masih perlu memberikan label pada beberapa catatan yang Anda hasilkan dengan menggunakan opsi **Buat file pelabelan**.

**Bagaimana saya bisa menegakkan bahwa transformasi cocok persis seperti yang saya ajarkan?**  
Transformasi `FindMatches` belajar dari label yang Anda berikan, sehingga dapat menghasilkan pasangan catatan yang tidak mematuhi label yang disediakan. Untuk menegakkan bahwa `FindMatches` transformasi menghormati label Anda, pilih **EnforceProvidedLabels**di. **FindMatchesParameter**

**Teknik apa yang dapat Anda gunakan ketika transformasi MLmengidentifikasi item sebagai kecocokan yang bukan kecocokan sejati?**  
Anda dapat menggunakan teknik berikut:
+ Meningkatkan `precisionRecallTradeoff` ke nilai yang lebih tinggi. Hal ini pada akhirnya akan menghasilkan lebih sedikit kecocokan, tetapi juga harus memecah klaster besar Anda ketika mencapai nilai yang cukup tinggi. 
+ Ambil baris output yang sesuai dengan hasil yang salah dan lakukan format ulang padanya sebagai set pelabelan (menghapus kolom `match_id` dan menambahkan kolom `labeling_set_id` dan `label`). Jika perlu, pecah (bagi) menjadi beberapa set pelabelan untuk memastikan bahwa pemberi label dapat mengingat setiap label saat menetapkan label. Kemudian, beri label dengan benar pada set yang cocok dan unggah file label dan tambahkan ke label yang ada. Hal ini mungkin akan cukup mengajarkan transformasi Anda tentang apa yang dicari untuk memahami polanya. 
+ (Lanjutan) Akhirnya, lihat data tersebut untuk melihat apakah ada pola yang dapat Anda deteksi yang tidak diperhatikan oleh sistem tersebut. Lakukan pra-proses pada data tersebut dengan menggunakan fungsi AWS Glue standar untuk *menormalkan* data. Sorot apa yang ingin Anda pelajari dari algoritme dengan memisahkan data yang Anda ketahui sebagai hal penting yang berbeda ke dalam kolom tersendiri. Atau bangun kolom gabungan dari kolom yang data-nya Anda ketahui sebagai data terkait. 

# Bekerja dengan transformasi pembelajaran mesin
<a name="console-machine-learning-transforms"></a>

Anda dapat menggunakan AWS Glue untuk membuat transformasi pembelajaran mesin kustom yang dapat digunakan untuk membersihkan data Anda. Anda dapat menggunakan transformasi ini saat membuat tugas di konsol AWS Glue . 

Untuk informasi lebih lanjut tentang cara membuat transformasi machine learning, lihat [Rekam pencocokan dengan AWS Lake Formation FindMatches](machine-learning.md).

**Topics**
+ [Mengubah properti](#console-machine-learning-properties)
+ [Menambahkan dan mengedit transformasi pembelajaran mesin](#console-machine-learning-transforms-actions)
+ [Melihat detail transformasi](#console-machine-learning-transforms-details)
+ [Ajarkan transformasi menggunakan label](#console-machine-learning-transforms-teaching-transforms)

## Mengubah properti
<a name="console-machine-learning-properties"></a>

Untuk melihat transformasi pembelajaran mesin yang ada, masuk ke Konsol Manajemen AWS, dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). Di panel navigasi di bawah **Integrasi Data dan ETL**, pilih **Alat klasifikasi data > Pencocokan Rekam**.

Properti untuk setiap transformasi:

**Nama transformasi**  
Nama unik yang Anda berikan pada transformasi saat Anda membuatnya.

**ID**  
Sebuah pengenal unik untuk transformasi. 

**Jumlah label**  
Jumlah label dalam file pelabelan yang disediakan untuk membantu mengajarkan transformasi. 

**Status**  
Menunjukkan apakah transformasi dalam status **Siap** atau **Perlu pelatihan**. Untuk menjalankan transformasi machine learning dengan berhasil dalam sebuah tugas, maka ia harus **Siap**. 

**Dibuat**  
Tanggal transformasi dibuat.

**Dimodifikasi**  
Tanggal transformasi terakhir diperbarui.

**Deskripsi**  
Deskripsi disediakan untuk transformasi, jika ada.

**Versi AWS Glue**  
Versi yang AWS Glue digunakan.

**Jalankan ID**  
Nama unik yang Anda berikan pada transformasi saat Anda membuatnya.

**Jenis tugas**  
Jenis transformasi machine learning; misalnya **Menemukan catatan yang cocok**.

**Status**  
Menunjukkan status tugas yang dijalankan. Status yang mungkin meliputi:  
+ Starting
+ Berjalan
+ Stopping
+ Dihentikan
+ Berhasil
+ Gagal
+ Waktu habis

**Kesalahan**  
Jika status Gagal, pesan kesalahan ditampilkan menjelaskan alasan kegagalan.

## Menambahkan dan mengedit transformasi pembelajaran mesin
<a name="console-machine-learning-transforms-actions"></a>

 Anda dapat melihat, menghapus, mengatur, dan mengajar, atau menyetel transformasi di konsol AWS Glue. Pilih kotak centang di samping transformasi yang ada dalam daftar, pilih **Tindakan**, kemudian pilih tindakan yang ingin Anda ambil. 

### Membuat transformasi ML baru
<a name="w2aac37c11c24c23c11b5"></a>

 Untuk menambahkan transformasi pembelajaran mesin baru, pilih **Buat transformasi**. Ikuti petunjuk di **Add job** wizard. Untuk informasi selengkapnya, lihat [Rekam pencocokan dengan AWS Lake Formation FindMatches](machine-learning.md). 

#### Langkah 1. Tetapkan properti transformasi.
<a name="w2aac37c11c24c23c11b5b7"></a>

1. Masukkan nama dan deskripsi (opsional).

1. Secara opsional, atur konfigurasi keamanan. Lihat [Menggunakan enkripsi data dengan transformasi pembelajaran mesin](#ml_transform_sec_config). 

1. Secara opsional, atur pengaturan eksekusi tugas. Pengaturan eksekusi tugas memungkinkan Anda untuk menyesuaikan bagaimana tugas dijalankan. Pilih jenis Pekerja, jumlah pekerja, batas waktu tugas (dalam menit), jumlah percobaan ulang, dan versi. AWS Glue

1. Secara opsional, atur Tag. Tag adalah label yang dapat Anda tetapkan ke AWS sumber daya. Setiap tag terdiri dari kunci dan nilai opsional. Tag dapat digunakan untuk mencari dan memfilter sumber daya Anda atau melacak AWS biaya Anda.

#### Langkah 2. Pilih tabel dan kunci utama.
<a name="w2aac37c11c24c23c11b5b9"></a>

1. Pilih database dan tabel AWS Glue Katalog.

1. Pilih kunci utama dari tabel yang dipilih. Kolom kunci primer biasanya berisi pengenal unik untuk setiap catatan dalam sumber data. 

#### Langkah 3. Pilih opsi penyetelan.
<a name="w2aac37c11c24c23c11b5c11"></a>

1.  Untuk **Recall vs presisi**, pilih nilai tuning untuk menyetel transformasi agar mendukung penarikan atau presisi. Secara default, **Balanced** dipilih, tetapi Anda dapat memilih untuk memilih untuk mengingat atau mendukung presisi, atau memilih **Custom** dan memasukkan nilai antara 0,0 dan 1,0 (inklusif). 

1.  Untuk **biaya lebih rendah vs akurasi**, pilih nilai tuning untuk mendukung biaya atau akurasi yang lebih rendah, atau pilih **Custom** dan masukkan nilai antara 0,0 dan 1,0 (inklusif). 

1.  Untuk **penegakan Match**, pilih **Paksa output agar sesuai dengan label** jika Anda ingin mengajarkan transformasi ML dengan memaksa output agar sesuai dengan label yang digunakan. 

#### Langkah 4. Tinjau dan buat.
<a name="w2aac37c11c24c23c11b5c13"></a>

1.  Tinjau opsi untuk langkah 1 - 3. 

1.  Pilih **Edit** untuk setiap langkah yang perlu dimodifikasi. Pilih **Buat transformasi** untuk menyelesaikan wizard buat transformasi. 

### Menggunakan enkripsi data dengan transformasi pembelajaran mesin
<a name="ml_transform_sec_config"></a>

Saat menambahkan transformasi machine learning ke AWS Glue, Anda dapat menentukan konfigurasi keamanan yang dikaitkan dengan sumber data atau target data. Jika bucket Amazon S3 digunakan untuk menyimpan, maka data dienkripsi dengan konfigurasi keamanan, tentukan konfigurasi keamanan yang sama saat membuat transformasi.

Anda juga dapat memilih untuk menggunakan enkripsi sisi server dengan AWS KMS (SSE-KMS) untuk mengenkripsi model dan label untuk mencegah orang yang tidak berwenang memeriksanya. Jika Anda memilih opsi ini, Anda diminta untuk memilih AWS KMS key berdasarkan nama, atau Anda dapat memilih **Masukkan kunci ARN**. Jika Anda memilih untuk memasukkan ARN untuk kunci KMS, maka kolom kedua muncul di mana Anda dapat memasukkan ARN kunci KMS.

**catatan**  
Saat ini, transformasi ML yang menggunakan kunci enkripsi kustom tidak didukung di Wilayah berikut:  
Asia Pasifik (Osaka) - `ap-northeast-3`

## Melihat detail transformasi
<a name="console-machine-learning-transforms-details"></a>

### Melihat properti transformasi
<a name="console-machine-learning-transforms-details"></a>

Halaman **properti Transform** menyertakan atribut transformasi Anda. Ia menunjukkan detail tentang definisi transformasi, termasuk yang berikut:
+ **Nama transformasi** menunjukkan nama transformasi.
+ **Jenis** mencantumkan jenis transformasi.
+ **Status** menampilkan apakah transformasi siap untuk digunakan dalam skrip atau tugas.
+ **Paksa keluaran untuk mencocokkan label** menampilkan apakah transformasi memaksa output untuk mencocokkan label yang disediakan oleh pengguna.
+ **Versi Spark** terkait dengan versi AWS Glue yang Anda pilih di **Properti eksekusi tugas** saat menambahkan transformasi. AWS Glue 1.0 dan Spark 2.4 direkomendasikan untuk sebagian besar pelanggan. Untuk informasi selengkapnya, lihat [Versi AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions).

### Riwayat, Perkirakan kualitas, dan Tag tab
<a name="w2aac37c11c24c23c13b5"></a>

 Detail transformasi termasuk informasi yang Anda tetapkan saat Anda membuat transformasi. Untuk melihat detail transformasi, pilih transformasi di daftar **Transformasi machine learning**, dan tinjau informasi pada tab berikut: 
+ Riwayat
+ Estimasi kualitas
+ Tag

#### Riwayat
<a name="console-machine-learning-transforms-history"></a>

Tab **Riwayat** menampilkan riwayat eksekusi tugas transformasi Anda. Beberapa jenis tugas dijalankan untuk mengajarkan transformasi. Untuk masing-masing tugas, metrik eksekusi meliputi yang berikut ini:
+ **ID Eksekusi** adalah sebuah pengenal yang dibuat oleh AWS Glue untuk setiap eksekusi tugas ini.
+ **Jenis tugas** menunjukkan jenis eksekusi tugas.
+ **Status** menunjukkan keberhasilan setiap tugas yang tercantum dengan eksekusi terbaru di bagian atas.
+ **Kesalahan** menunjukkan detail pesan kesalahan jika eksekusi tidak berhasil.
+ **Waktu mulai** menunjukkan tanggal dan waktu (waktu setempat) bahwa tugas dimulai.
+ **Waktu akhir** menunjukkan tanggal dan waktu (waktu setempat) bahwa tugas berakhir.
+ **Log** tautan ke log yang ditulis ke `stdout` untuk eksekusi tugas ini.

  Tautan **Log** membawa Anda ke Amazon CloudWatch Logs. Di sana Anda dapat melihat detail tentang tabel yang dibuat di AWS Glue Data Catalog dan kesalahan apa pun yang ditemui. Anda dapat mengelola periode penyimpanan log Anda di CloudWatch konsol. Retensi log default adalah `Never Expire`. Untuk informasi selengkapnya tentang cara mengubah periode penyimpanan, lihat [Mengubah Penyimpanan Data Log di CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention) di *Panduan Pengguna CloudWatch Log Amazon*.
+ **File label** menunjukkan tautan ke Amazon S3 untuk file pelabelan yang dihasilkan.

#### Estimasi kualitas
<a name="console-machine-learning-transforms-metrics"></a>

 Tab **Estimasi Kualitas** menunjukkan metrik yang Anda gunakan untuk mengukur kualitas transformasi. Estimasi dihitung dengan membandingkan prediksi kecocokan transformasi menggunakan subset dari data berlabel Anda terhadap label yang telah Anda berikan. Perkiraan ini adalah perkiraan. Anda dapat menjalankan tugas **Estimasi kualitas** yang dijalankan dari tab ini.

Tab **Estimasi Kualitas** menampilkan metrik dari eksekusi **Estimasi kualitas** terakhir termasuk properti berikut:
+ **Area di bawah kurva Presisi-Recall** adalah nomor tunggal memperkirakan batas atas kualitas keseluruhan transformasi. Ia bersifat independen tidak tergantung pada pilihan yang dibuat untuk parameter precision-recall. Nilai yang lebih tinggi menunjukkan bahwa Anda memiliki precision-recall tradeoff yang lebih menarik. 
+ **Precision** memperkirakan seberapa sering transformasi benar ketika memprediksi kecocokan.
+ **Batas atas recall** memperkirakan bahwa untuk kecocokan yang sebenarnya, seberapa sering transformasi memprediksi kecocokan.
+ **F1** memperkirakan akurasi transformasi antara 0 dan 1, di mana 1 adalah akurasi terbaik. Untuk informasi selengkapnya, lihat [Skor F1](https://en.wikipedia.org/wiki/F1_score) di Wikipedia.
+ Tabel **Nilai penting kolom** menunjukkan nama kolom dan nilai pentingnya untuk setiap kolom. Nilai penting kolom membantu Anda memahami bagaimana kolom berkontribusi pada model Anda, dengan mengidentifikasi kolom dalam catatan Anda yang paling sering digunakan untuk melakukan pencocokan. Data ini dapat meminta Anda untuk menambah atau mengubah label Anda untuk meningkatkan atau menurunkan nilai penting kolom.

  Nilai penting kolom memberikan skor numerik untuk setiap kolom, dengan angka desimal tidak lebih besar dari 1,0.

Untuk informasi tentang memahami estimasi kualitas dibandingkan kualitas sebenarnya, lihat [Estimasi kualitas versus kualitas end-to-end (benar)](#console-machine-learning-quality-estimates-true-quality).

Untuk informasi lebih lanjut tentang cara menyetel transformasi Anda, lihat [Pembelajaran mesin tuning berubah di AWS Glue](add-job-machine-learning-transform-tuning.md).

#### Estimasi kualitas versus kualitas end-to-end (benar)
<a name="console-machine-learning-quality-estimates-true-quality"></a>

AWS Gluememperkirakan kualitas transformasi Anda dengan menyajikan model internal yang dipelajari mesin dengan sejumlah pasang catatan yang Anda berikan label yang cocok tetapi model tersebut belum pernah terlihat sebelumnya. Estimasi kualitas ini adalah fungsi dari kualitas model yang dipelajari mesin (yang dipengaruhi oleh jumlah catatan yang Anda beri label untuk “mengajarkan” transformasi). Ingatan end-to-end, atau *true* (yang tidak dihitung secara otomatis oleh`ML transform`) juga dipengaruhi oleh mekanisme `ML transform` penyaringan yang mengusulkan berbagai kemungkinan kecocokan dengan model yang dipelajari mesin. 

Anda dapat menyetel metode penyaringan ini terutama dengan menentukan nilai tuning Akurasi **Biaya Rendah**. Karena nilai tuning semakin mendekati **Akurasi**, sistem melakukan pencarian yang lebih menyeluruh dan mahal untuk pasangan catatan yang mungkin cocok. Lebih banyak pasang catatan diumpankan ke model yang dipelajari mesin Anda, dan ingatan Anda `ML transform` end-to-end atau sebenarnya mendekati metrik penarikan yang diperkirakan. Akibatnya, perubahan end-to-end kualitas pertandingan Anda sebagai akibat dari perubahan tradeoff biaya/akurasi untuk pertandingan Anda biasanya tidak akan tercermin dalam perkiraan kualitas.

#### Tag
<a name="w2aac37c11c24c23c13b5c13"></a>

 Tag adalah label yang dapat Anda tetapkan ke AWS sumber daya. Setiap tag terdiri dari kunci dan nilai opsional. Tag dapat digunakan untuk mencari dan memfilter sumber daya Anda atau melacak AWS biaya Anda. 

## Ajarkan transformasi menggunakan label
<a name="console-machine-learning-transforms-teaching-transforms"></a>

 Anda dapat mengajarkan transformasi ML menggunakan label (contoh) dengan memilih **Teach transform** dari halaman detail transformasi ML. Saat Anda mengajarkan algoritma pembelajaran mesin Anda dengan memberikan contoh (disebut label), Anda dapat memilih label yang ada untuk digunakan, atau membuat file pelabelan. 

![\[Tangkapan layar menampilkan layar wizard untuk Ajarkan transformasi menggunakan label.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/machine-learning-teach-transform.png)

+  **Pelabelan** — Jika Anda memiliki label, pilih **Saya memiliki label**. Jika Anda tidak memiliki label, Anda masih dapat melanjutkan dengan langkah berikutnya dalam menghasilkan file pelabelan. 
+  **Hasilkan file pelabelan** — AWS Glue ekstrak catatan dari data sumber Anda dan sarankan catatan pencocokan potensial. Anda memilih bucket Amazon S3 untuk menyimpan file label yang dihasilkan. Pilih **Hasilkan file pelabelan** untuk memulai proses. Setelah selesai, pilih **Unduh file pelabelan**. File yang diunduh akan memiliki kolom untuk label tempat Anda dapat mengisi label. 
+  **Unggah label dari Amazon S3** — Pilih file pelabelan yang sudah selesai dari bucket Amazon S3 tempat file label disimpan. Kemudian, pilih untuk menambahkan label ke label yang ada atau menimpa label yang ada. Pilih **Unggah file pelabelan dari Amazon** S3. 

# Tutorial: Membuat transformasi pembelajaran mesin dengan AWS Glue
<a name="machine-learning-transform-tutorial"></a>

Tutorial ini memandu Anda melakukan tindakan untuk membuat dan mengelola transformasi machine learning (ML) menggunakan AWS Glue. Sebelum menggunakan tutorial ini, Anda harus terbiasa dengan menggunakan konsol AWS Glue untuk menambahkan crawler dan tugas serta mengedit skrip. Anda juga harus terbiasa dengan mencari dan mengunduh file di konsol Amazon Simple Storage Service (Amazon S3).

Dalam contoh ini, Anda membuat sebuah transformasi `FindMatches` untuk menemukan catatan yang cocok, mengajari cara mengidentifikasi catatan yang cocok dan tidak cocok, dan menggunakannya dalam sebuah tugas AWS Glue. Tugas AWS Glue menulis file Amazon S3 baru dengan sebuah kolom tambahan bernama `match_id`. 

Sumber data yang digunakan oleh tutorial ini adalah sebuah file bernama `dblp_acm_records.csv`. File ini adalah versi modifikasi dari publikasi akademis (DBLP dan ACM) yang tersedia dari [Set data DBLP ACM](https://doi.org/10.3886/E100843V2) asli. File `dblp_acm_records.csv` adalah file nilai yang dipisahkan dengan koma (CSV) dalam format UTF-8 tanpa tanda urutan byte (BOM). 

File kedua, `dblp_acm_labels.csv`, adalah contoh file pelabelan yang berisi catatan kecocokan dan catatan ketidakcocokan yang digunakan untuk mengajarkan transformasi sebagai bagian dari tutorial ini. 

**Topics**
+ [Langkah 1: Merayapi data sumber](#ml-transform-tutorial-crawler)
+ [Langkah 2: Tambahkan transformasi pembelajaran mesin](#ml-transform-tutorial-create)
+ [Langkah 3: Ajarkan transformasi pembelajaran mesin Anda](#ml-transform-tutorial-teach)
+ [Langkah 4: Perkirakan kualitas transformasi pembelajaran mesin Anda](#ml-transform-tutorial-estimate-quality)
+ [Langkah 5: Tambahkan dan jalankan pekerjaan dengan transformasi pembelajaran mesin Anda](#ml-transform-tutorial-add-job)
+ [Langkah 6: Verifikasi data keluaran dari Amazon S3](#ml-transform-tutorial-data-output)

## Langkah 1: Merayapi data sumber
<a name="ml-transform-tutorial-crawler"></a>

Pertama, lakukan crawling pada file CSV Amazon S3 sumber untuk membuat sebuah tabel metadata yang sesuai di Katalog Data.

**penting**  
Untuk mengarahkan crawler agar membuat tabel untuk file CSV saja, simpan data sumber CSV di folder Amazon S3 yang berbeda dari file lain.

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Crawler**, **Tambahkan crawler**. 

1. Ikuti penuntun untuk membuat dan menjalankan crawler bernama `demo-crawl-dblp-acm` dengan keluaran ke basisdata `demo-db-dblp-acm`. Saat menjalankan penuntun, buat basis data `demo-db-dblp-acm` jika itu belum ada. Pilih jalur sertakan Amazon S3 ke data sampel di Wilayah saat ini AWS . Contohnya, untuk `us-east-1`, Amazon S3 mencakup path ke file sumber yakni `s3://ml-transforms-public-datasets-us-east-1/dblp-acm/records/dblp_acm_records.csv`. 

   Jika berhasil, crawler menciptakan tabel `dblp_acm_records_csv` dengan kolom berikut: id, judul, penulis, tempat, tahun, dan sumber.

## Langkah 2: Tambahkan transformasi pembelajaran mesin
<a name="ml-transform-tutorial-create"></a>

Selanjutnya, tambahkan sebuah transformasi machine learning yang didasarkan pada skema tabel sumber data yang dibuat oleh crawler bernama `demo-crawl-dblp-acm`.

1. Di AWS Glue konsol, di panel navigasi di bawah **Integrasi Data dan ETL**, pilih **Alat klasifikasi data > Pencocokan Rekam**, lalu **Tambahkan** transformasi. Ikuti wizard untuk membuat `Find matches` transformasi dengan properti berikut. 

   1. Untuk **Nama transformasi**, masukkan **demo-xform-dblp-acm**. Ini adalah nama transformasi yang digunakan untuk menemukan kecocokan dalam data sumber.

   1. Untuk **IAM role**, pilih sebuah IAM role yang memiliki izin ke data sumber Amazon S3, file pelabelan, dan operasi API AWS Glue. Untuk informasi selengkapnya, lihat [Membuat IAM role untuk AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) dalam *Panduan Developer AWS Glue *.

   1. Untuk **sumber Data**, pilih tabel bernama **dblp\$1acm\$1records\$1csv** dalam database. **demo-db-dblp-acm**

   1. Untuk **Kunci primer**, pilih kolom kunci primer untuk tabel, **id**.

1. Dalam penuntun, pilih **Selesai** dan kembali ke daftar **Transformasi ML**.

## Langkah 3: Ajarkan transformasi pembelajaran mesin Anda
<a name="ml-transform-tutorial-teach"></a>

Selanjutnya, Anda ajari transformasi machine learning Anda dengan menggunakan file pelabelan sampel dalam tutorial ini.

Anda tidak dapat menggunakan transformasi bahasa mesin dalam tugas extract, transform, and load (ETL) sampai statusnya **Siap digunakan**. Agar transformasi Anda siap, maka Anda harus mengajarinya cara mengidentifikasi catatan kecocokan dan ketidakcocokan dengan memberikan contoh catatan kecocokan dan ketidakcocokan. Untuk mengajarkan transformasi Anda, Anda dapat **Buat sebuah file label**, menambahkan label, dan kemudian **Unggah file label**. Dalam tutorial ini, Anda dapat menggunakan contoh file pelabelan bernama `dblp_acm_labels.csv`. Untuk informasi selengkapnya tentang proses pelabelan, lihat [Pelabelan](machine-learning.md#machine-learning-labeling).

1. Di AWS Glue konsol, di panel navigasi, pilih **Rekam Pencocokan**.

1. Pilih transformasi `demo-xform-dblp-acm`, dan kemudian pilih **Tindakan**, **Ajarkan**. Ikuti panduan untuk mengajar transformasi `Find matches` Anda. 

1. Pada halaman properti transformasi, pilih **Saya memiliki label**. Pilih jalur Amazon S3 ke file pelabelan sampel di Wilayah saat ini. AWS Contohnya, untuk `us-east-1`, unggah file pelabelan yang tersedia dari path Amazon S3 `s3://ml-transforms-public-datasets-us-east-1/dblp-acm/labels/dblp_acm_labels.csv` dengan opsi **menimpa** label yang ada. File pelabelan harus ditempatkan di Amazon S3 dengan Wilayah yang sama dengan konsol AWS Glue.

   Ketika Anda mengunggah file pelabelan, sebuah tugas dimulai di AWS Glue untuk menambah atau menimpa label yang digunakan untuk mengajar transformasi cara memproses sumber data.

1. Di halaman terakhir penuntun, pilih **Selesai**, dan kembali ke daftar **Transformasi ML**.

## Langkah 4: Perkirakan kualitas transformasi pembelajaran mesin Anda
<a name="ml-transform-tutorial-estimate-quality"></a>

Selanjutnya, Anda dapat memperkirakan kualitas transformasi machine learning Anda. Kualitasnya tergantung pada berapa banyak pelabelan yang telah Anda lakukan. Untuk informasi selengkapnya tentang cara memperkirakan kualitas, lihat [Estimasi kualitas](console-machine-learning-transforms.md#console-machine-learning-transforms-metrics).

1. Di AWS Glue konsol, di panel navigasi di bawah **Integrasi Data dan ETL**, pilih **Alat klasifikasi data > Pencocokan Rekam**. 

1. Pilih transformasi `demo-xform-dblp-acm`, dan pilih tab **Estimasi kualitas**. Tab ini menampilkan perkiraan kualitas saat ini, jika tersedia, untuk transformasi tersebut. 

1. Pilih **Estimasi kualitas** untuk memulai sebuah tugas untuk memperkirakan kualitas transformasi. Keakuratan estimasi kualitas tersebut didasarkan pada pelabelan data sumber.

1. Arahkan ke tab **Riwayat**. Dalam panel ini, eksekusi tugas dicantumkan untuk transformasi, termasuk tugas **Estimasi kualitas**. Untuk detail lebih lanjut tentang eksekusi, pilih **Log**. Periksa apakah status eksekusi adalah **Berhasil** ketika selesai.

## Langkah 5: Tambahkan dan jalankan pekerjaan dengan transformasi pembelajaran mesin Anda
<a name="ml-transform-tutorial-add-job"></a>

Pada langkah ini, Anda menggunakan transformasi machine learning Anda untuk menambah dan menjalankan tugas di AWS Glue. Saat transformasi `demo-xform-dblp-acm` sudah **Siap digunakan**, Anda dapat menggunakannya dalam tugas ETL.

1. Pada konsol AWS Glue, di panel navigasi, pilih **Tugas**.

1. Pilih **Tambahkan tugas**, dan ikuti langkah-langkah yang ada di penuntun untuk membuat tugas ETL Spark dengan skrip yang sudah dihasilkan. Pilih nilai-nilai properti berikut untuk transformasi Anda:

   1. Untuk **Nama**, pilih contoh pekerjaan dalam tutorial ini, **demo-etl-dblp-acm**.

   1. Untuk **IAM role**, pilih IAM role dengan izin ke data sumber Amazon S3, file pelabelan, dan operasi API AWS Glue. Untuk informasi selengkapnya, lihat [Membuat IAM role untuk AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) dalam *Panduan Developer AWS Glue *.

   1. Untuk **Bahasa ETL**, pilih **Scala**. Ini adalah bahasa pemrograman dalam skrip ETL.

   1. Untuk **nama file Script**, pilih **demo-etl-dblp-acm**. Ini adalah nama file dari skrip Scala (sama dengan nama tugas).

   1. Untuk **Sumber data**, pilih **dblp\$1acm\$1records\$1csv**. Sumber data yang Anda pilih harus sesuai dengan skema sumber data transformasi machine learning.

   1. Untuk **Jenis transformasi**, pilih **Temukan catatan yang cocok** untuk membuat sebuah tugas dengan menggunakan transformasi machine learning.

   1. Bersihkan **Hapus catatan duplikasi**. Anda tidak ingin menghapus catatan duplikat karena catatan keluaran yang ditulis memiliki tambahan kolom `match_id` yang ditambahkan. 

   1. Untuk **Transform**, pilih **demo-xform-dblp-acm**, transformasi pembelajaran mesin yang digunakan oleh pekerjaan.

   1. Untuk **Buat tabel di target data Anda**, pilih untuk membuat tabel dengan properti berikut:
      + **Jenis penyimpanan data** — **Amazon S3**
      + **Format** — **CSV**
      + **Jenis kompresi** — **None**
      + **Jalur target - Jalur** Amazon S3 tempat output pekerjaan ditulis (di Wilayah konsol AWS saat ini)

1. Pilih **Simpan tugas dan edit skrip** untuk menampilkan halaman editor skrip.

1. Edit skrip untuk menambahkan pernyataan untuk menyebabkan output tugas untuk **Path target** untuk ditulis ke satu file partisi tunggal. Tambahkan pernyataan ini segera setelah pernyataan yang menjalankan transformasi `FindMatches`. Pernyataan tersebut serupa dengan yang berikut ini.

   ```
   val single_partition = findmatches1.repartition(1) 
   ```

   Anda harus mengubah pernyataan `.writeDynamicFrame(findmatches1)` untuk menulis output sebagai `.writeDynamicFrame(single_partion)`. 

1. Setelah Anda mengedit skrip, pilih **Simpan**. Skrip yang sudah dimodifikasi terlihat mirip dengan kode berikut, tapi disesuaikan untuk lingkungan Anda.

   ```
   import com.amazonaws.services.glue.GlueContext
   import com.amazonaws.services.glue.errors.CallSite
   import com.amazonaws.services.glue.ml.FindMatches
   import com.amazonaws.services.glue.util.GlueArgParser
   import com.amazonaws.services.glue.util.Job
   import com.amazonaws.services.glue.util.JsonOptions
   import org.apache.spark.SparkContext
   import scala.collection.JavaConverters._
   
   object GlueApp {
     def main(sysArgs: Array[String]) {
       val spark: SparkContext = new SparkContext()
       val glueContext: GlueContext = new GlueContext(spark)
       // @params: [JOB_NAME]
       val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
       Job.init(args("JOB_NAME"), glueContext, args.asJava)
       // @type: DataSource
       // @args: [database = "demo-db-dblp-acm", table_name = "dblp_acm_records_csv", transformation_ctx = "datasource0"]
       // @return: datasource0
       // @inputs: []
       val datasource0 = glueContext.getCatalogSource(database = "demo-db-dblp-acm", tableName = "dblp_acm_records_csv", redshiftTmpDir = "", transformationContext = "datasource0").getDynamicFrame()
       // @type: FindMatches
       // @args: [transformId = "tfm-123456789012", emitFusion = false, survivorComparisonField = "<primary_id>", transformation_ctx = "findmatches1"]
       // @return: findmatches1
       // @inputs: [frame = datasource0]
       val findmatches1 = FindMatches.apply(frame = datasource0, transformId = "tfm-123456789012", transformationContext = "findmatches1", computeMatchConfidenceScores = true)
     
     
       // Repartition the previous DynamicFrame into a single partition. 
       val single_partition = findmatches1.repartition(1)    
    
       
       // @type: DataSink
       // @args: [connection_type = "s3", connection_options = {"path": "s3://aws-glue-ml-transforms-data/sal"}, format = "csv", transformation_ctx = "datasink2"]
       // @return: datasink2
       // @inputs: [frame = findmatches1]
       val datasink2 = glueContext.getSinkWithFormat(connectionType = "s3", options = JsonOptions("""{"path": "s3://aws-glue-ml-transforms-data/sal"}"""), transformationContext = "datasink2", format = "csv").writeDynamicFrame(single_partition)
       Job.commit()
     }
   }
   ```

1. Pilih **Jalankan tugas** untuk memulai eksekusi tugas. Periksa status tugas dalam daftar tugas. Setelah tugas selesai, di **Transformasi ML**, tab **Riwayat**, ada baris **ID eksekusi** baru yang ditambahkan dari jenis **Tugas ETL**.

1. Arahkan ke **Tugas**, tab **Riwayat**. Dalam panel ini, eksekusi tugas dicantumkan. Untuk detail lebih lanjut tentang eksekusi, pilih **Log**. Periksa apakah status eksekusi adalah **Berhasil** ketika selesai.

## Langkah 6: Verifikasi data keluaran dari Amazon S3
<a name="ml-transform-tutorial-data-output"></a>

Pada langkah ini, Anda memeriksa output dari eksekusi tugas di bucket Amazon S3 yang Anda pilih ketika Anda menambahkan tugas. Anda dapat mengunduh file output ke komputer lokal Anda dan memverifikasi bahwa catatan kecocokan telah diidentifikasi.

1. Buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Unduh file output target dari tugas `demo-etl-dblp-acm`. Buka file dalam aplikasi spreadsheet (Anda mungkin perlu menambahkan ekstensi file `.csv` pada file untuk membukanya dengan benar).

   Gambar berikut menunjukkan kutipan dari output pada Microsoft Excel.  
![\[Excel spreadsheet menunjukkan output dari transformasi tersebut.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/demo_output_dblp_acm.png)

   Sumber data dan file target keduanya memiliki 4.911 catatan. Namun, transformasi `Find matches` menambahkan kolom lain bernama `match_id` untuk mengidentifikasi catatan kecocokan dalam output. Baris dengan `match_id` yang sama dianggap catatan yang cocok. `match_confidence_score`Ini adalah angka antara 0 dan 1 yang memberikan perkiraan kualitas kecocokan yang ditemukan oleh`Find matches`.

1. Urutkan file output berdasarkan `match_id` untuk dengan mudah melihat catatan mana yang cocok. Bandingkan nilai di kolom lain untuk melihat apakah Anda setuju dengan hasil transformasi `Find matches`. Jika tidak, Anda dapat terus mengajarkan transformasi dengan menambahkan lebih banyak label lainnya. 

   Anda juga dapat mengurutkan file berdasarkan kolom lain, seperti `title`, untuk melihat apakah catatan dengan judul serupa memiliki `match_id` yang sama. 

# Menemukan kecocokan tambahan
<a name="machine-learning-incremental-matches"></a>

Fitur Temukan kecocokan memungkinkan Anda mengidentifikasi rekaman duplikat atau pencocokan dalam kumpulan data Anda, bahkan ketika catatan tidak memiliki pengenal unik yang umum dan tidak ada bidang yang sama persis. Rilis awal Find match mengubah catatan pencocokan yang diidentifikasi dalam satu kumpulan data. Saat menambahkan data baru ke kumpulan data, Anda harus menggabungkannya dengan kumpulan data bersih yang ada dan menjalankan kembali pencocokan dengan kumpulan data gabungan lengkap.

Fitur pencocokan inkremental membuatnya lebih mudah untuk mencocokkan catatan tambahan terhadap kumpulan data yang cocok. Misalkan Anda ingin mencocokkan data prospek dengan kumpulan data pelanggan yang ada. Kemampuan kecocokan tambahan memberi Anda fleksibilitas untuk mencocokkan ratusan ribu prospek baru dengan basis data prospek dan pelanggan yang ada dengan menggabungkan hasilnya ke dalam satu database atau tabel. Dengan hanya mencocokkan antara kumpulan data baru dan yang sudah ada, optimasi kecocokan tambahan find mengurangi waktu komputasi, yang juga mengurangi biaya.

Penggunaan pencocokan inkremental mirip dengan Temukan kecocokan seperti yang dijelaskan dalam[Tutorial: Membuat transformasi pembelajaran mesin dengan AWS Glue](machine-learning-transform-tutorial.md). Topik ini hanya mengidentifikasi perbedaan dengan pencocokan inkremental.

Untuk informasi lebih lanjut, lihat posting blog tentang [Pencocokan data tambahan](https://aws.amazon.com/blogs/big-data/incremental-data-matching-using-aws-lake-formation/).

## Menjalankan pekerjaan pencocokan tambahan
<a name="machine-learning-incremental-matches-add"></a>

Untuk prosedur berikut, misalkan yang berikut: 
+ *Anda telah meng-crawl dataset yang ada ke dalam tabel first\$1records.* Dataset *first\$1records* harus berupa kumpulan data yang cocok, atau output dari pekerjaan yang cocok.
+ Anda telah membuat dan melatih transformasi Find match dengan AWS Glue versi 2.0. Ini adalah satu-satunya versi AWS Glue yang mendukung kecocokan tambahan.
+ Bahasa ETL adalah Scala. Perhatikan bahwa Python juga didukung.
+ Model yang sudah dihasilkan disebut`demo-xform`.

1. *Merayapi kumpulan data tambahan ke tabel second\$1records.*

1. Pada konsol AWS Glue, di panel navigasi, pilih **Tugas**.

1. Pilih **Tambahkan tugas**, dan ikuti langkah-langkah yang ada di penuntun untuk membuat tugas ETL Spark dengan skrip yang sudah dihasilkan. Pilih nilai-nilai properti berikut untuk transformasi Anda:

   1. Untuk **Nama**, pilih **demo-etl**.

   1. [Untuk **peran IAM**, pilih peran IAM dengan izin ke data sumber Amazon S3, file pelabelan, dan operasi API. AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html)

   1. Untuk **Bahasa ETL**, pilih **Scala**.

   1. Untuk **nama file Script**, pilih **demo-etl**. Ini adalah nama file dari skrip Scala.

   1. Untuk **sumber Data**, pilih **first\$1records**. Sumber data yang Anda pilih harus sesuai dengan skema sumber data transformasi machine learning.

   1. Untuk **Jenis transformasi**, pilih **Temukan catatan yang cocok** untuk membuat sebuah tugas dengan menggunakan transformasi machine learning.

   1. Pilih opsi pencocokan tambahan, dan untuk **Sumber Data** pilih tabel bernama **second\$1records**.

   1. Untuk **Transform**, pilih **demo-xform**, transformasi pembelajaran mesin yang digunakan oleh pekerjaan.

   1. Pilih **Buat tabel di target data Anda** atau **Gunakan tabel di katalog data dan perbarui target data Anda**.

1. Pilih **Simpan tugas dan edit skrip** untuk menampilkan halaman editor skrip.

1. Pilih **Jalankan tugas** untuk memulai eksekusi tugas.

# Menggunakan FindMatches dalam pekerjaan visual
<a name="find-matches-visual-job"></a>

 Untuk menggunakan **FindMatches**transform inAWS Glue Studio, Anda dapat menggunakan node **Custom Transform** yang memanggil FindMatches API. Untuk informasi selengkapnya tentang cara menggunakan transformasi kustom, lihat [Membuat transformasi kustom](https://docs.aws.amazon.com/glue/latest/ug/transforms-custom.html) 

**catatan**  
 Saat ini, FindMatches API hanya berfungsi dengan`Glue 2.0`. Untuk menjalankan pekerjaan dengan transformasi Kustom yang memanggil FindMatches API, pastikan AWS Glue versinya ada `Glue 2.0` di tab **Detail pekerjaan**. Jika versi tidak`Glue 2.0`, pekerjaan akan gagal saat runtime dengan pesan kesalahan berikut: “tidak dapat mengimpor nama '' dari 'FindMatchesawsglueml.transforms'”. AWS Glue 

## Prasyarat
<a name="adding-find-matches-to-a-visual-job-prerequisites"></a>
+  Untuk menggunakan transformasi **Find Matches**, buka AWS Glue Studio konsol di[https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/). 
+  Buat transformasi pembelajaran mesin. Saat dibuat, transformId dihasilkan. Anda akan memerlukan ID ini untuk langkah-langkah di bawah ini. Untuk informasi selengkapnya tentang cara membuat transformasi pembelajaran mesin, lihat [Menambahkan dan mengedit transformasi pembelajaran mesin](https://docs.aws.amazon.com/glue/latest/dg/console-machine-learning-transforms.html#console-machine-learning-transforms-actions). 

## Menambahkan FindMatches transformasi
<a name="adding-find-matches-to-a-visual-job"></a>

**Untuk menambahkan FindMatches transformasi:**

1.  Di editor AWS Glue Studio pekerjaan, buka panel Sumber daya dengan mengklik simbol silang di sudut kiri atas grafik pekerjaan visual dan pilih Sumber data dengan memilih tab **Data**. Ini adalah sumber data yang ingin Anda periksa kecocokan.   
![\[Tangkapan layar menunjukkan simbol silang di dalam lingkaran. Ketika Anda mengklik ini di editor pekerjaan visual, panel sumber daya terbuka.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/resource-panel-blank-canvas.png)

1.  Pilih simpul sumber data, lalu buka panel Resource dengan mengklik simbol silang di sudut kiri atas grafik pekerjaan visual dan cari 'custom transform'. Pilih node **Custom Transform** untuk menambahkannya ke grafik. **Transformasi Kustom** ditautkan ke node sumber data. Jika tidak, Anda dapat mengklik node **Custom Transform** dan memilih tab **properti Node**, lalu di bawah **orang tua Node**, pilih sumber data. 

1.  Klik node **Custom Transform** di grafik visual, lalu pilih tab **Properti Node** dan beri nama transformasi kustom. Disarankan agar Anda mengganti nama transformasi sehingga nama transformasi mudah diidentifikasi dalam grafik visual. 

1.  Pilih tab **Transform**, di mana Anda dapat mengedit blok kode. Di sinilah kode untuk memanggil FindMatches API dapat ditambahkan.   
![\[Tangkapan layar menunjukkan blok kode di tab Transform saat node Custom Transform dipilih.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/custom-transform-code-block.png)

    Blok kode berisi kode yang telah diisi sebelumnya untuk membantu Anda memulai. Timpa kode yang telah diisi sebelumnya dengan templat di bawah ini. Template memiliki placeholder untuk transformId, yang dapat Anda **berikan**. 

   ```
   def MyTransform (glueContext, dfc) -> DynamicFrameCollection:
       dynf = dfc.select(list(dfc.keys())[0])
       from awsglueml.transforms import FindMatches
       findmatches = FindMatches.apply(frame = dynf, transformId = "<your id>")
       return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
   ```

1.  Klik node **Custom Transform** di grafik visual, lalu buka panel Resource dengan mengklik simbol silang di sudut kiri atas grafik pekerjaan visual dan cari 'Select From Collection'. Tidak perlu mengubah pilihan default karena hanya ada satu DynamicFrame di koleksi. 

1.  Anda dapat terus menambahkan transformasi atau menyimpan hasilnya, yang sekarang diperkaya dengan kolom tambahan find match. Jika Anda ingin mereferensikan kolom-kolom baru tersebut dalam transformasi hilir, Anda perlu menambahkannya ke skema keluaran transformasi. cara termudah untuk melakukannya adalah dengan memilih tab **pratinjau data** dan kemudian di tab skema pilih “Gunakan skema tinjauan data”. 

1.  Untuk menyesuaikan FindMatches, Anda dapat menambahkan parameter tambahan untuk diteruskan ke metode 'terapkan'. Lihat [FindMatches kelas](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-findmatches.html). 

## Menambahkan FindMatches transformasi bertahap
<a name="find-matches-incrementally-visual-job"></a>

 Dalam kasus kecocokan inkremental, prosesnya sama dengan **Menambahkan FindMatches transformasi** dengan perbedaan berikut: 
+  Alih-alih node induk untuk transformasi kustom, Anda memerlukan dua node induk. 
+  Node induk pertama harus berupa kumpulan data. 
+  Node induk kedua harus berupa kumpulan data tambahan. 

   Ganti `transformId` dengan Anda `transformId` di blok kode template: 

  ```
  def MyTransform (glueContext, dfc) -> DynamicFrameCollection:
      dfs = list(dfc.values())
      dynf = dfs[0]
      inc_dynf = dfs[1]
      from awsglueml.transforms import FindIncrementalMatches
      findmatches = FindIncrementalMatches.apply(existingFrame = dynf, incrementalFrame = inc_dynf,
                                      transformId = "<your id>")
      return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
  ```
+  Untuk parameter opsional, lihat [FindIncrementalMatches kelas](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.html). 

# Migrasi program Apache Spark ke AWS Glue
<a name="glue-author-migrate-apache-spark"></a>

Apache Spark adalah platform sumber terbuka untuk beban kerja komputasi terdistribusi yang dilakukan pada kumpulan data besar. AWS Glue memanfaatkan kemampuan Spark untuk memberikan pengalaman yang dioptimalkan untuk ETL. Anda dapat memigrasi program Spark AWS Glue untuk memanfaatkan fitur kami. AWS Glue memberikan peningkatan kinerja yang sama yang Anda harapkan dari Apache Spark di Amazon EMR.

## Jalankan kode Spark
<a name="glue-author-migrate-apache-spark-run"></a>

Kode Native Spark dapat dijalankan di AWS Glue lingkungan di luar kotak. Skrip sering dikembangkan dengan mengubah sepotong kode secara iteratif, alur kerja yang cocok untuk Sesi Interaktif. Namun, kode yang ada lebih cocok untuk dijalankan dalam AWS Glue pekerjaan, yang memungkinkan Anda menjadwalkan dan secara konsisten mendapatkan log dan metrik untuk setiap skrip yang dijalankan. Anda dapat mengunggah dan mengedit skrip yang ada melalui konsol. 

1. Dapatkan sumber ke skrip Anda. Untuk contoh ini, Anda akan menggunakan contoh skrip dari repositori Apache Spark. [Contoh Binarizer](https://github.com/apache/spark/blob/master/examples/src/main/python/ml/binarizer_example.py) 

1. ****Di AWS Glue Console, perluas panel navigasi sisi kiri dan pilih ETL > Jobs**** 

   Di panel **Buat pekerjaan**, pilih **Editor skrip Spark**. Bagian **Opsi** akan muncul. Di bawah **Opsi**, pilih **Unggah dan edit skrip yang ada**.

   Bagian **unggahan file** akan muncul. Di bawah **Unggah file**, klik **Pilih file**. Pemilih file sistem Anda akan muncul. Arahkan ke lokasi tempat Anda menyimpan`binarizer_example.py`, pilih dan konfirmasikan pilihan Anda.

   Tombol **Create** akan muncul di header untuk panel **Create job**. Klik itu.  
![\[Halaman AWS Glue Studio Jobs dengan panel editor skrip Spark dipilih.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/migrate-apache-spark-01-upload-job.png)

1. Browser Anda akan menavigasi ke editor skrip. Pada header, klik tab **Job details**. Tetapkan **Nama** dan **Peran IAM**. Untuk panduan seputar peran AWS Glue IAM, konsultasikan[Menyiapkan izin IAM untuk AWS Glue](set-up-iam.md).

   Opsional - atur **jumlah pekerja yang diminta** ke `2` dan **Jumlah percobaan ulang** ke. `1` Opsi ini berharga saat menjalankan pekerjaan produksi, tetapi menolaknya akan merampingkan pengalaman Anda saat menguji fitur.

   Di bilah judul, klik **Simpan**, lalu **Jalankan**  
![\[Halaman detail pekerjaan dengan opsi ditetapkan seperti yang diinstruksikan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/migrate-apache-spark-02-job-details.png)

1. Arahkan ke tab **Runs**. Anda akan melihat panel yang sesuai dengan pekerjaan Anda. Tunggu beberapa menit dan halaman akan disegarkan secara otomatis untuk menampilkan **Berhasil di bawah status** **Jalankan**.  
![\[Halaman pekerjaan berjalan dengan pekerjaan yang sukses.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/migrate-apache-spark-03-job-runs.png)

1. Anda akan ingin memeriksa output Anda untuk mengonfirmasi bahwa skrip Spark berjalan sebagaimana dimaksud. Skrip contoh Apache Spark ini harus menulis string ke aliran output. Anda dapat menemukannya dengan menavigasi ke **log Output di bawah log** **Cloudwatch** di panel agar pekerjaan berhasil dijalankan. Perhatikan id job run, id yang dihasilkan di bawah label **Id** yang dimulai dengan`jr_`.

   Ini akan membuka CloudWatch konsol, diatur untuk memvisualisasikan konten grup AWS Glue log default`/aws-glue/jobs/output`, disaring ke konten aliran log untuk id jalankan pekerjaan. Setiap pekerja akan membuat aliran log, ditampilkan sebagai baris di bawah **aliran Log**. Satu pekerja seharusnya menjalankan kode yang diminta. Anda harus membuka semua aliran log untuk mengidentifikasi pekerja yang benar. Setelah Anda menemukan pekerja yang tepat, Anda akan melihat output skrip, seperti yang terlihat pada gambar berikut:   
![\[Halaman CloudWatch konsol dengan output program Spark.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/migrate-apache-spark-04-log-output.png)

## Prosedur umum yang diperlukan untuk memigrasi program Spark
<a name="glue-author-migrate-apache-spark-migrate"></a>

### Menilai dukungan versi Spark
<a name="glue-author-migrate-apache-spark-migrate-versions"></a>

 AWS Glue versi rilis menentukan versi Apache Spark dan Python yang tersedia untuk pekerjaan itu. AWS Glue Anda dapat menemukan AWS Glue versi kami dan apa yang mereka dukung[AWS Glue versi](release-notes.md#release-notes-versions). Anda mungkin perlu memperbarui program Spark Anda agar kompatibel dengan versi Spark yang lebih baru untuk mengakses fitur tertentu. AWS Glue 

### Sertakan pustaka pihak ketiga
<a name="glue-author-migrate-apache-spark-third-party-libraries"></a>

Banyak program Spark yang ada akan memiliki ketergantungan, baik pada artefak pribadi maupun publik. AWS Glue mendukung dependensi gaya JAR untuk Pekerjaan Scala serta dependensi Roda dan sumber pure-Python untuk pekerjaan Python.

**Python** - Untuk informasi tentang dependensi Python, lihat [Menggunakan pustaka Python dengan Glue AWS](aws-glue-programming-python-libraries.md)

[Dependensi Python umum disediakan di AWS Glue lingkungan, termasuk pustaka Pandas yang umum diminta.](https://pandas.pydata.org/) Dependensi disertakan dalam AWS Glue Versi 2.0\$1. Untuk informasi selengkapnya tentang modul yang disediakan, lihat[Modul Python sudah disediakan di Glue AWS](aws-glue-programming-python-libraries.md#glue-modules-provided). Jika Anda perlu menyediakan Job dengan versi dependensi yang berbeda yang disertakan secara default, Anda dapat menggunakannya`--additional-python-modules`. Untuk informasi tentang argumen pekerjaan, lihat[Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue](aws-glue-programming-etl-glue-arguments.md).

Anda dapat menyediakan dependensi Python tambahan dengan argumen pekerjaan. `--extra-py-files` Jika Anda memigrasikan pekerjaan dari program Spark, parameter ini adalah opsi yang baik karena secara fungsional setara dengan `--py-files` bendera di PySpark, dan tunduk pada batasan yang sama. Untuk informasi selengkapnya tentang `--extra-py-files` parameter, lihat [Termasuk file Python dengan fitur asli PySpark](aws-glue-programming-python-libraries.md#extra-py-files-support)

Untuk pekerjaan baru, Anda dapat mengelola dependensi Python dengan argumen pekerjaan. `--additional-python-modules` Menggunakan argumen ini memungkinkan pengalaman manajemen ketergantungan yang lebih menyeluruh. Parameter ini mendukung dependensi gaya Roda, termasuk yang memiliki binding kode asli yang kompatibel dengan Amazon Linux 2.

**Scala**

Anda dapat menyediakan dependensi Scala tambahan dengan Job `--extra-jars` Argument. Dependensi harus di-host di Amazon S3 dan nilai argumen harus berupa daftar jalur Amazon S3 yang dibatasi koma tanpa spasi. Anda mungkin merasa lebih mudah untuk mengelola konfigurasi Anda dengan menggabungkan ulang dependensi Anda sebelum menghosting dan mengonfigurasinya. AWS Glue Dependensi JAR berisi bytecode Java, yang dapat dihasilkan dari bahasa JVM apa pun. Anda dapat menggunakan bahasa JVM lainnya, seperti Java, untuk menulis dependensi khusus.

### Mengelola kredensial sumber data
<a name="glue-author-migrate-apache-spark-credential-management"></a>

Program Spark yang ada mungkin datang dengan konfigurasi yang kompleks atau khusus untuk menarik data dari sumber data mereka. Alur autentikasi sumber data umum didukung oleh koneksi. AWS Glue Untuk informasi selengkapnya tentang koneksi AWS Glue , lihat [Menghubungkan ke data](glue-connections.md).

AWS Glue koneksi memfasilitasi menghubungkan Job Anda ke berbagai jenis penyimpanan data dengan dua cara utama: melalui panggilan metode ke pustaka kami dan mengatur **koneksi jaringan Tambahan** di AWS konsol. Anda juga dapat memanggil AWS SDK dari dalam pekerjaan Anda untuk mengambil informasi dari koneksi. 

 **Panggilan metode** — AWS Glue Koneksi terintegrasi erat dengan Katalog AWS Glue Data, layanan yang memungkinkan Anda mengkurasi informasi tentang kumpulan data Anda, dan metode yang tersedia untuk berinteraksi dengan AWS Glue koneksi mencerminkan hal itu. Jika Anda memiliki konfigurasi autentikasi yang ingin Anda gunakan kembali, untuk koneksi JDBC, Anda dapat mengakses konfigurasi AWS Glue koneksi Anda melalui metode pada`extract_jdbc_conf`. `GlueContext` Untuk informasi selengkapnya, lihat [extract\$1jdbc\$1conf](aws-glue-api-crawler-pyspark-extensions-glue-context.md#aws-glue-api-crawler-pyspark-extensions-glue-context-extract_jdbc_conf) 

**Konfigurasi konsol** — AWS Glue Pekerjaan menggunakan AWS Glue koneksi terkait untuk mengonfigurasi koneksi ke subnet Amazon VPC. Jika Anda langsung mengelola materi keamanan Anda, Anda mungkin perlu menyediakan `NETWORK` jenis **Koneksi jaringan tambahan** di AWS konsol untuk mengonfigurasi perutean. Untuk informasi selengkapnya tentang API AWS Glue koneksi, lihat [Koneksi API](aws-glue-api-catalog-connections.md)

Jika program Spark Anda memiliki alur autentikasi khusus atau tidak biasa, Anda mungkin perlu mengelola materi keamanan Anda secara langsung. Jika AWS Glue koneksi sepertinya tidak cocok, Anda dapat meng-host materi keamanan dengan aman di Secrets Manager dan mengaksesnya melalui boto3 atau AWS SDK, yang disediakan dalam pekerjaan.

### Konfigurasikan Apache Spark
<a name="glue-author-migrate-apache-spark-spark-configuration"></a>

Migrasi kompleks sering mengubah konfigurasi Spark menjadi beban kerja mereka. Versi modern Apache Spark memungkinkan konfigurasi runtime diatur dengan file. `SparkSession` AWS Glue 3.0\$1 Pekerjaan disediakan`SparkSession`, yang dapat dimodifikasi untuk mengatur konfigurasi runtime. [Konfigurasi Apache Spark](https://spark.apache.org/docs/latest/configuration.html). Tuning Spark rumit, dan AWS Glue tidak menjamin dukungan untuk mengatur semua konfigurasi Spark. Jika migrasi Anda memerlukan konfigurasi tingkat Spark yang substansif, hubungi dukungan.

### Mengatur konfigurasi kustom
<a name="glue-author-migrate-apache-spark-custom-configuration"></a>

Program Spark yang dimigrasi dapat dirancang untuk mengambil konfigurasi khusus. AWS Glue memungkinkan konfigurasi diatur pada tingkat pekerjaan dan pekerjaan, melalui argumen pekerjaan. Untuk informasi tentang argumen pekerjaan, lihat[Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue](aws-glue-programming-etl-glue-arguments.md). Anda dapat mengakses argumen pekerjaan dalam konteks pekerjaan melalui perpustakaan kami. AWS Glue menyediakan fungsi utilitas untuk memberikan tampilan yang konsisten antara argumen yang ditetapkan pada pekerjaan dan argumen yang ditetapkan pada pekerjaan yang dijalankan. Lihat [Mengakses parameter menggunakan `getResolvedOptions`](aws-glue-api-crawler-pyspark-extensions-get-resolved-options.md) di Python dan [AWS GlueScala GlueArgParser APIs](glue-etl-scala-apis-glue-util-glueargparser.md) di Scala.

### Migrasikan kode Java
<a name="glue-author-migrate-apache-spark-java-code"></a>

Seperti dijelaskan dalam[Sertakan pustaka pihak ketiga](#glue-author-migrate-apache-spark-third-party-libraries), dependensi Anda dapat berisi kelas yang dihasilkan oleh bahasa JVM, seperti Java atau Scala. Dependensi Anda dapat menyertakan metode. `main` Anda dapat menggunakan `main` metode dalam ketergantungan sebagai titik masuk untuk pekerjaan Scala. AWS Glue Ini memungkinkan Anda untuk menulis `main` metode Anda di Java, atau menggunakan kembali `main` metode yang dikemas dengan standar perpustakaan Anda sendiri. 

Untuk menggunakan `main` metode dari dependensi, lakukan hal berikut: Hapus isi panel pengeditan yang menyediakan objek default`GlueApp`. Berikan nama kelas yang sepenuhnya memenuhi syarat dalam ketergantungan sebagai argumen pekerjaan dengan kunci`--class`. Anda kemudian harus dapat memicu Job run.

Anda tidak dapat mengonfigurasi urutan atau struktur argumen yang AWS Glue diteruskan ke `main` metode. Jika kode Anda yang ada perlu membaca konfigurasi yang disetel AWS Glue, ini kemungkinan akan menyebabkan ketidakcocokan dengan kode sebelumnya. Jika Anda menggunakan`getResolvedOptions`, Anda juga tidak akan memiliki tempat yang baik untuk memanggil metode ini. Pertimbangkan untuk menjalankan dependensi Anda langsung dari metode utama yang dihasilkan oleh. AWS Glue Skrip AWS Glue ETL berikut menunjukkan contoh ini.

```
import com.amazonaws.services.glue.util.GlueArgParser

object GlueApp {
  def main(sysArgs: Array[String]) {
    val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
    
    // Invoke static method from JAR. Pass some sample arguments as a String[], one defined inline and one taken from the job arguments, using getResolvedOptions
    com.mycompany.myproject.MyClass.myStaticPublicMethod(Array("string parameter1", args("JOB_NAME")))
    
    // Alternatively, invoke a non-static public method.
    (new com.mycompany.myproject.MyClass).someMethod()
  }
}
```

# Bekerja dengan pekerjaan Ray di AWS Glue
<a name="ray-jobs-section"></a>

**penting**  
AWS Glue karena Ray tidak akan lagi terbuka untuk pelanggan baru mulai 30 April 2026. Jika Anda ingin menggunakan AWS Glue untuk Ray, daftar sebelum tanggal tersebut. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Untuk kemampuan yang mirip dengan for AWS Glue for Ray, jelajahi Amazon EKS. Untuk informasi selengkapnya, lihat [AWS Glue untuk Ray akhir dukungan](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Bagian ini memberikan informasi tentang penggunaan AWS Glue untuk pekerjaan Ray. Untuk informasi lebih lanjut tentang menulis AWS Glue untuk skrip Ray, lihat [Pemrograman skrip Ray](aws-glue-programming-ray.md) bagian ini.

**Topics**
+ [Memulai dengan AWS Glue untuk Ray](#author-job-ray-using)
+ [Lingkungan runtime Ray yang didukung](#author-job-ray-runtimes)
+ [Akuntansi untuk pekerja di pekerjaan Ray](#author-job-ray-worker-accounting)
+ [Menggunakan parameter pekerjaan di pekerjaan Ray](author-job-ray-job-parameters.md)
+ [Memantau pekerjaan Ray dengan metrik](author-job-ray-monitor.md)

## Memulai dengan AWS Glue untuk Ray
<a name="author-job-ray-using"></a>

Untuk bekerja dengan AWS Glue Ray, Anda menggunakan AWS Glue pekerjaan dan sesi interaktif yang sama dengan yang Anda gunakan AWS Glue untuk Spark. AWS Glue pekerjaan dirancang untuk menjalankan skrip yang sama pada irama berulang, sementara sesi interaktif dirancang untuk memungkinkan Anda menjalankan cuplikan kode secara berurutan terhadap sumber daya yang disediakan yang sama. 

AWS Glue ETL dan Ray berbeda di bawahnya, jadi dalam skrip Anda, Anda memiliki akses ke berbagai alat, fitur, dan konfigurasi. Sebagai kerangka komputasi baru yang dikelola oleh AWS Glue, Ray memiliki arsitektur yang berbeda dan menggunakan kosakata yang berbeda untuk menggambarkan apa yang dilakukannya. Untuk informasi selengkapnya, lihat [Whitepaper Arsitektur](https://docs.ray.io/en/latest/ray-contribute/whitepaper.html) dalam dokumentasi Ray. 

**catatan**  
AWS Glue untuk Ray tersedia di AS Timur (Virginia N.), AS Timur (Ohio), AS Barat (Oregon), Asia Pasifik (Tokyo), dan Eropa (Irlandia).

### Pekerjaan Ray di AWS Glue Studio konsol
<a name="author-job-ray-using-console"></a>

Pada halaman **Jobs** di AWS Glue Studio konsol, Anda dapat memilih opsi baru saat Anda membuat pekerjaan di AWS Glue Studio— **Ray script editor**. Pilih opsi ini untuk membuat pekerjaan Ray di konsol. Untuk informasi selengkapnya tentang pekerjaan dan cara penggunaannya, lihat[Membangun pekerjaan visual ETL](author-job-glue.md).

![\[Halaman Jobs AWS Glue Studio dengan opsi editor skrip Ray dipilih.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/ray_job_setup.png)


### lowongan kerja Ray di AWS CLI dan SDK
<a name="author-job-ray-using-cli"></a>

Pekerjaan Ray dalam AWS CLI menggunakan tindakan dan parameter SDK yang sama dengan pekerjaan lainnya. AWS Glue untuk Ray memperkenalkan nilai-nilai baru untuk parameter tertentu. Untuk informasi selengkapnya di API Pekerjaan, lihat[Lowongan](aws-glue-api-jobs-job.md).

## Lingkungan runtime Ray yang didukung
<a name="author-job-ray-runtimes"></a>

Dalam pekerjaan Spark, `GlueVersion` menentukan versi Apache Spark dan Python yang tersedia dalam pekerjaan untuk Spark. AWS Glue Versi Python menunjukkan versi yang didukung untuk pekerjaan jenis Spark. Ini bukan bagaimana lingkungan runtime Ray dikonfigurasi.

Untuk pekerjaan Ray, Anda harus mengatur `GlueVersion` ke `4.0` atau lebih besar. Namun, versi Ray, Python, dan pustaka tambahan yang tersedia di pekerjaan Ray Anda ditentukan oleh `Runtime` bidang dalam definisi pekerjaan.

Lingkungan `Ray2.4` runtime akan tersedia minimal 6 bulan setelah rilis. Saat Ray berkembang pesat, Anda akan dapat menggabungkan pembaruan dan peningkatan Ray melalui rilis lingkungan runtime masa depan.

Nilai yang valid: `Ray2.4`


| Nilai runtime | Versi Ray dan Python | 
| --- | --- | 
| Ray2.4(untuk AWS Glue 4.0\$1) |  Sinar 2.4.0 Python 3.9  | 

**Informasi tambahan**
+ Untuk catatan rilis yang menyertai AWS Glue rilis Ray, lihat[AWS Glue versi](release-notes.md#release-notes-versions).
+ Untuk pustaka Python yang disediakan di lingkungan runtime, lihat. [Modul disediakan dengan pekerjaan Ray](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided)

## Akuntansi untuk pekerja di pekerjaan Ray
<a name="author-job-ray-worker-accounting"></a>

AWS Glue menjalankan pekerjaan Ray pada tipe pekerja EC2 berbasis Graviton baru, yang hanya tersedia untuk pekerjaan Ray. Untuk menyediakan pekerja ini dengan tepat untuk beban kerja yang dirancang Ray, kami menyediakan rasio sumber daya komputasi yang berbeda terhadap sumber daya memori dari sebagian besar pekerja. Untuk memperhitungkan sumber daya ini, kami menggunakan unit pemrosesan data yang dioptimalkan memori (M-DPU) daripada unit pemrosesan data standar (DPU).
+ Satu M-DPU sesuai dengan memori 4 v CPUs dan 32 GB.
+ Satu DPU sesuai dengan memori 4 v CPUs dan 16 GB. DPUs digunakan untuk memperhitungkan sumber daya AWS Glue dengan pekerjaan Spark dan pekerja terkait.

Pekerjaan Ray saat ini memiliki akses ke satu jenis pekerja,`Z.2X`. `Z.2X`Pekerja memetakan ke 2 M- DPUs (8 vCPUs, 64 GB memori) dan memiliki 128 GB ruang disk. Sebuah `Z.2X` mesin menyediakan 8 pekerja Ray (satu per vCPU).

Jumlah M- DPUs yang dapat Anda gunakan secara bersamaan di akun tunduk pada kuota layanan. Untuk informasi selengkapnya tentang batas AWS Glue akun Anda, lihat [AWS Glue titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/glue.html).

Anda menentukan jumlah node pekerja yang tersedia untuk pekerjaan Ray dengan `--number-of-workers (NumberOfWorkers)` dalam definisi pekerjaan. Untuk informasi selengkapnya tentang nilai Ray di Jobs API, lihat[Lowongan](aws-glue-api-jobs-job.md).

Anda selanjutnya dapat menentukan jumlah minimum pekerja yang harus dialokasikan oleh pekerjaan Ray dengan parameter `--min-workers` pekerjaan. Untuk informasi selengkapnya tentang parameter pekerjaan, lihat[Referensi](author-job-ray-job-parameters.md#author-job-ray-parameters-reference). 

# Menggunakan parameter pekerjaan di pekerjaan Ray
<a name="author-job-ray-job-parameters"></a>

**penting**  
AWS Glue karena Ray tidak akan lagi terbuka untuk pelanggan baru mulai 30 April 2026. Jika Anda ingin menggunakan AWS Glue untuk Ray, daftar sebelum tanggal tersebut. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Untuk kemampuan yang mirip dengan for AWS Glue for Ray, jelajahi Amazon EKS. Untuk informasi selengkapnya, lihat [AWS Glue untuk Ray akhir dukungan](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Anda menetapkan argumen untuk pekerjaan AWS Glue Ray dengan cara yang sama seperti Anda menetapkan argumen AWS Glue untuk pekerjaan Spark. Untuk informasi selengkapnya tentang AWS Glue API, lihat[Lowongan](aws-glue-api-jobs-job.md). Anda dapat mengkonfigurasi pekerjaan AWS Glue Ray dengan argumen yang berbeda, yang tercantum dalam referensi ini. Anda juga dapat memberikan argumen Anda sendiri. 

Anda dapat mengonfigurasi pekerjaan melalui konsol, di tab **Detail pekerjaan**, di bawah judul **Parameter Pekerjaan**. Anda juga dapat mengonfigurasi pekerjaan AWS CLI melalui pengaturan `DefaultArguments` pekerjaan, atau pengaturan `Arguments` pada pekerjaan. Argumen default dan parameter pekerjaan tetap dengan pekerjaan melalui beberapa proses. 

Misalnya, berikut ini adalah sintaksis untuk menjalankan sebuah tugas menggunakan `--arguments` untuk menetapkan parameter khusus.

```
$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py",--test-environment="true"'
```

Setelah Anda mengatur argumen, Anda dapat mengakses parameter pekerjaan dari dalam pekerjaan Ray Anda melalui variabel lingkungan. Ini memberi Anda cara untuk mengonfigurasi pekerjaan Anda untuk setiap proses. Nama variabel lingkungan akan menjadi nama argumen pekerjaan tanpa `--` awalan. 

Misalnya, dalam contoh sebelumnya, nama variabel akan menjadi `scriptLocation` dan`test-environment`. Anda kemudian akan mengambil argumen melalui metode yang tersedia di pustaka standar:`test_environment = os.environ.get('test-environment')`. Untuk informasi selengkapnya tentang mengakses variabel lingkungan dengan Python, [lihat modul os](https://docs.python.org/3/library/os.html) dalam dokumentasi Python.

## Konfigurasikan bagaimana pekerjaan Ray menghasilkan log
<a name="author-job-ray-logging-configuration"></a>

Secara default, pekerjaan Ray menghasilkan log dan metrik yang dikirim ke CloudWatch dan Amazon S3. Anda dapat menggunakan `--logging_configuration` parameter untuk mengubah cara log dihasilkan, saat ini Anda dapat menggunakannya untuk menghentikan pekerjaan Ray dari menghasilkan berbagai jenis log. Parameter ini mengambil objek JSON, yang kuncinya sesuai dengan yang ingin logs/behaviors Anda ubah. Ini mendukung kunci berikut:
+ `CLOUDWATCH_METRICS`— Mengkonfigurasi rangkaian CloudWatch metrik yang dapat digunakan untuk memvisualisasikan kesehatan kerja. Untuk informasi lebih lanjut tentang metrik, lihat [Memantau pekerjaan Ray dengan metrik](author-job-ray-monitor.md).
+ `CLOUDWATCH_LOGS`— Mengkonfigurasi CloudWatch log yang memberikan rincian tingkat aplikasi Ray tentang status pekerjaan yang dijalankan. Untuk informasi lebih lanjut tentang log, lihat [Pemecahan masalah AWS Glue untuk kesalahan Ray dari log](troubleshooting-ray.md).
+ `S3`— Mengkonfigurasi apa yang AWS Glue menulis ke Amazon S3, terutama informasi CloudWatch yang mirip dengan log tetapi sebagai file daripada aliran log.

Untuk menonaktifkan perilaku logging Ray, berikan nilainya`{\"IS_ENABLED\": \"False\"}`. Misalnya, untuk menonaktifkan CloudWatch metrik dan CloudWatch log, berikan konfigurasi berikut:

```
"--logging_configuration": "{\"CLOUDWATCH_METRICS\": {\"IS_ENABLED\": \"False\"}, \"CLOUDWATCH_LOGS\": {\"IS_ENABLED\": \"False\"}}"
```

## Referensi
<a name="author-job-ray-parameters-reference"></a>

 Pekerjaan Ray mengenali nama argumen berikut yang dapat Anda gunakan untuk mengatur lingkungan skrip untuk pekerjaan dan pekerjaan Ray Anda:
+ `--logging_configuration`— Digunakan untuk menghentikan pembuatan berbagai log yang dibuat oleh Ray jobs. Log ini dihasilkan secara default pada semua pekerjaan Ray. Format: Objek JSON yang lolos dari string. Untuk informasi selengkapnya, lihat [Konfigurasikan bagaimana pekerjaan Ray menghasilkan log](#author-job-ray-logging-configuration).
+ `--min-workers`— Jumlah minimum node pekerja yang dialokasikan untuk pekerjaan Ray. Node pekerja dapat menjalankan beberapa replika, satu per CPU virtual. Format: bilangan bulat. Minimal: 0. Maksimum: nilai yang ditentukan `--number-of-workers (NumberOfWorkers)` pada definisi pekerjaan. Untuk informasi selengkapnya tentang akuntansi untuk node pekerja, lihat[Akuntansi untuk pekerja di pekerjaan Ray](ray-jobs-section.md#author-job-ray-worker-accounting).
+ `--object_spilling_config`— AWS Glue untuk dukungan Ray menggunakan Amazon S3 sebagai cara memperluas ruang yang tersedia untuk penyimpanan objek Ray. Untuk mengaktifkan perilaku ini, Anda dapat memberikan Ray *objek yang menumpahkan* objek konfigurasi JSON dengan parameter ini. Untuk informasi lebih lanjut tentang konfigurasi tumpahan objek Ray, lihat [Object Spilling](https://docs.ray.io/en/latest/ray-core/objects/object-spilling.html) dalam dokumentasi Ray. Format: objek JSON.

  AWS Glue untuk Ray hanya mendukung tumpahan ke disk atau tumpah ke Amazon S3 sekaligus. Anda dapat menyediakan beberapa lokasi untuk tumpahan, selama mereka menghormati batasan ini. Saat tumpah ke Amazon S3, Anda juga perlu menambahkan izin IAM ke pekerjaan Anda untuk bucket ini.

  Saat menyediakan objek JSON sebagai konfigurasi dengan CLI, Anda harus menyediakannya sebagai string, dengan objek JSON string-escaped. Misalnya, nilai string untuk tumpah ke satu jalur Amazon S3 akan terlihat seperti:. `"{\"type\": \"smart_open\", \"params\": {\"uri\":\"s3path\"}}"` Dalam AWS Glue Studio, berikan parameter ini sebagai objek JSON tanpa pemformatan tambahan. 
+ `--object_store_memory_head`— Memori yang dialokasikan ke penyimpanan objek Plasma pada simpul kepala Ray. Instance ini menjalankan layanan manajemen cluster, serta replika pekerja. Nilai mewakili persentase memori bebas pada instance setelah awal yang hangat. Anda menggunakan parameter ini untuk menyetel beban kerja intensif memori — default dapat diterima untuk sebagian besar kasus penggunaan. Format: bilangan bulat positif. Minimal: 1. Maksimal: 100.

  Untuk informasi lebih lanjut tentang Plasma, lihat [Toko Objek Dalam Memori Plasma](https://ray-project.github.io/2017/08/08/plasma-in-memory-object-store.html) di dokumentasi Ray.
+ `--object_store_memory_worker`— Memori yang dialokasikan ke penyimpanan objek Plasma pada node pekerja Ray. Contoh ini hanya menjalankan replika pekerja. Nilai mewakili persentase memori bebas pada instance setelah awal yang hangat. Parameter ini digunakan untuk menyetel beban kerja intensif memori — default dapat diterima untuk sebagian besar kasus penggunaan. Format: bilangan bulat positif. Minimal: 1. Maksimal: 100.

  Untuk informasi lebih lanjut tentang Plasma, lihat [Toko Objek Dalam Memori Plasma](https://ray-project.github.io/2017/08/08/plasma-in-memory-object-store.html) di dokumentasi Ray.
+ `--pip-install`— Satu set paket Python yang akan diinstal. Anda dapat menginstal paket dari PyPI menggunakan argumen ini. Format: dibatasi koma daftar.

  Entri paket PyPI ada dalam format`package==version`, dengan nama PyPI dan versi paket target Anda. Entri menggunakan pencocokan versi Python untuk mencocokkan paket dan versi, `==` seperti, bukan yang sama. `=` Ada yang lain operator pencocokan versi. Untuk informasi lebih lanjut, lihat [PEP 440](https://peps.python.org/pep-0440/#version-matching) di situs web Python. Anda juga dapat menyediakan modul khusus dengan`--s3-py-modules`. 
+ `--s3-py-modules`- Satu set jalur Amazon S3 yang menampung distribusi modul Python. Format: daftar yang dibatasi koma.

  Anda dapat menggunakan ini untuk mendistribusikan modul Anda sendiri ke pekerjaan Ray Anda. Anda juga dapat menyediakan modul dari PyPI dengan. `--pip-install` Tidak seperti AWS Glue ETL, modul khusus tidak diatur melalui pip, tetapi diteruskan ke Ray untuk distribusi. Untuk informasi selengkapnya, lihat [Modul Python tambahan untuk pekerjaan Ray](edit-script-ray-env-dependencies.md#edit-script-ray-python-libraries-additional).
+ `--working-dir`— Jalur ke file.zip yang dihosting di Amazon S3 yang berisi file yang akan didistribusikan ke semua node yang menjalankan pekerjaan Ray Anda. Format: string. Lihat informasi yang lebih lengkap di [Menyediakan file untuk pekerjaan Ray Anda](edit-script-ray-env-dependencies.md#edit-script-ray-working-directory).

# Memantau pekerjaan Ray dengan metrik
<a name="author-job-ray-monitor"></a>

**penting**  
AWS Glue karena Ray tidak akan lagi terbuka untuk pelanggan baru mulai 30 April 2026. Jika Anda ingin menggunakan AWS Glue untuk Ray, daftar sebelum tanggal tersebut. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Untuk kemampuan yang mirip dengan for AWS Glue for Ray, jelajahi Amazon EKS. Untuk informasi selengkapnya, lihat [AWS Glue untuk Ray akhir dukungan](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Anda dapat memantau pekerjaan Ray menggunakan AWS Glue Studio dan Amazon CloudWatch. CloudWatch mengumpulkan dan memproses metrik mentah dari AWS Glue dengan Ray, yang membuatnya tersedia untuk analisis. Metrik ini divisualisasikan di AWS Glue Studio konsol, sehingga Anda dapat memantau pekerjaan Anda saat berjalan.

Untuk gambaran umum tentang cara memantau AWS Glue, lihat[Pemantauan AWS Glue menggunakan CloudWatch metrik Amazon](monitoring-awsglue-with-cloudwatch-metrics.md). Untuk gambaran umum tentang cara menggunakan CloudWatch metrik yang diterbitkan oleh AWS Glue, lihat[Pemantauan CloudWatch dengan Amazon](monitor-cloudwatch.md).

## Memantau pekerjaan Ray di AWS Glue konsol
<a name="author-job-ray-monitor-console"></a>

Pada halaman detail untuk menjalankan pekerjaan, di bawah bagian **Run details**, Anda dapat melihat grafik agregat pra-bangun yang memvisualisasikan metrik pekerjaan yang tersedia. AWS Glue Studio mengirimkan metrik pekerjaan CloudWatch untuk setiap pekerjaan yang dijalankan. Dengan ini, Anda dapat membangun profil cluster dan tugas Anda, serta mengakses informasi terperinci tentang setiap node.

Untuk informasi selengkapnya tentang grafik metrik yang tersedia, lihat. [Melihat Amazon CloudWatch metrik untuk menjalankan pekerjaan Ray](view-job-runs.md#monitoring-job-run-metrics-ray)

## Ikhtisar metrik pekerjaan Ray di CloudWatch
<a name="author-job-ray-monitor-cw"></a>

Kami menerbitkan metrik Ray saat pemantauan terperinci CloudWatch diaktifkan. Metrik dipublikasikan ke `Glue/Ray` CloudWatch namespace.
+ **Metrik instans**

  Kami menerbitkan metrik tentang CPU, memori, dan pemanfaatan disk dari instance yang ditugaskan ke pekerjaan. Metrik ini diidentifikasi oleh fitur seperti`ExecutorId`, `ExecutorType` dan`host`. Metrik ini adalah bagian dari metrik CloudWatch agen Linux standar. Anda dapat menemukan informasi tentang nama dan fitur metrik dalam CloudWatch dokumentasi. Untuk informasi selengkapnya, lihat [Metrik yang dikumpulkan oleh CloudWatch agen](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html).
+ **Metrik kluster sinar**

  Kami meneruskan metrik dari proses Ray yang menjalankan skrip Anda ke namespace ini, lalu memberikannya yang paling penting untuk Anda. Metrik yang tersedia mungkin berbeda menurut versi Ray. Untuk informasi selengkapnya tentang versi Ray yang menjalankan tugas Anda, lihat[AWS Glue versi](release-notes.md). 

  Ray mengumpulkan metrik pada tingkat instans. Ini juga menyediakan metrik untuk tugas dan cluster. Untuk informasi selengkapnya tentang strategi metrik dasar Ray, lihat [Metrik](https://docs.ray.io/en/latest/ray-observability/ray-metrics.html#system-metrics) dalam dokumentasi Ray.

**catatan**  
 Kami tidak mempublikasikan metrik Ray ke `Glue/Job Metrics/` namespace, yang hanya digunakan untuk AWS Glue pekerjaan ETL.

# Mengonfigurasi properti pekerjaan untuk pekerjaan shell Python di AWS Glue
<a name="add-job-python"></a>

 Anda dapat menggunakan tugas shell Python untuk menjalankan skrip Python sebagai shell di AWS Glue. Dengan pekerjaan shell Python, Anda dapat menjalankan skrip yang kompatibel dengan Python 3.6 atau Python 3.9. 

**catatan**  
 Support untuk Pyshell v3.6 akan berakhir pada 1 Maret 2026. Untuk memigrasikan beban kerja Anda, lihat [Memigrasi dari pekerjaan shell Python AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/pyshell-migration.html). Jika Anda ingin melanjutkan dengan Python shell v3.9 lihat. [Migrasi dari Python shell 3.6 ke Python shell 3.9](#migrating-version-pyshell36-to-pyshell39) 

**Topics**
+ [Batasan](#python-shell-limitations)
+ [Lingkungan eksekusi](#python-shell-execution-environment)
+ [Mendefinisikan properti pekerjaan untuk pekerjaan shell Python](#create-job-python-properties)
+ [Pustaka yang didukung untuk pekerjaan shell Python](#python-shell-supported-library)
+ [Menyediakan pustaka Python Anda sendiri](#create-python-extra-library)
+ [Gunakan AWS CloudFormation dengan pekerjaan shell Python di AWS Glue](#python-shell-jobs-cloudformation)
+ [Migrasi dari Python shell 3.6 ke Python shell 3.9](#migrating-version-pyshell36-to-pyshell39)
+ [Migrasi dari pekerjaan shell AWS Glue Python](pyshell-migration.md)

## Batasan
<a name="python-shell-limitations"></a>

Perhatikan batasan pekerjaan Python Shell berikut ini:
+  Anda tidak dapat menggunakan bookmark tugas dengan tugas shell Python tersebut. 
+ Anda tidak dapat mengemas pustaka Python apa pun sebagai file `.egg` di Python 3.9\$1. Sebaliknya, gunakan `.whl`.
+ `--extra-files`Opsi ini tidak dapat digunakan, karena pembatasan salinan sementara data S3.

## Lingkungan eksekusi
<a name="python-shell-execution-environment"></a>

Pekerjaan shell Python berjalan di lingkungan eksekusi terkelola yang menyediakan akses ke penyimpanan lokal untuk pemrosesan data sementara:

**Penyimpanan sementara lokal**  
`/tmp`Direktori tersedia untuk penyimpanan sementara selama eksekusi pekerjaan. Direktori ini menyediakan sekitar 14 GiB ruang kosong yang dapat Anda gunakan untuk:  
+ Pemrosesan file sementara
+ Penyimpanan data menengah
+ Caching kumpulan data kecil
`/tmp`Direktori bersifat sementara dan dibersihkan setelah pekerjaan selesai. Jangan menggunakannya untuk penyimpanan data penting yang persisten.

## Mendefinisikan properti pekerjaan untuk pekerjaan shell Python
<a name="create-job-python-properties"></a>

Bagian ini menjelaskan mendefinisikan properti pekerjaan diAWS Glue Studio, atau menggunakan AWS CLI.

### AWS Glue Studio
<a name="create-job-python-properties-studio"></a>

Saat Anda menentukan pekerjaan shell Python AndaAWS Glue Studio, Anda memberikan beberapa properti berikut: 

**IAM Role**  
Tentukan peran AWS Identity and Access Management (IAM) yang digunakan untuk otorisasi sumber daya yang digunakan untuk menjalankan pekerjaan dan mengakses penyimpanan data. Untuk informasi selengkapnya tentang izin menjalankan tugas di AWS Glue, lihat [Manajemen identitas dan akses untuk AWS Glue](security-iam.md).

**Tipe**  
Pilih **Python shell** untuk menjalankan skrip Python dengan perintah tugas bernama `pythonshell`.

**Versi Python**  
Pilih versi Python. Defaultnya adalah Python 3.9. Versi yang valid adalah Python 3.6 dan Python 3.9.

**Muat pustaka analitik umum (Disarankan)**  
Pilih opsi ini untuk menyertakan pustaka umum untuk Python 3.9 di shell Python.  
Jika pustaka Anda kustom atau bertentangan dengan yang sudah diinstal sebelumnya, Anda dapat memilih untuk tidak menginstal pustaka umum. Namun, Anda dapat menginstal pustaka tambahan selain pustaka umum.  
Ketika Anda memilih opsi ini, `library-set` opsi diatur ke`analytics`. Saat Anda membatalkan pilihan ini, `library-set` opsi diatur ke`none`. 

**Nama file skrip dan jalur Skrip**  
Kode dalam Skrip mendefinisikan logika prosedural tugas Anda. Anda menyediakan nama skrip dan lokasi di Amazon Simple Storage Service (Amazon S3). Konfirmasi bahwa tidak ada file dengan nama yang sama sebagai direktori skrip pada path. Untuk mem-pelajari selengkapnya tentang menggunakan skrip, lihat [AWS Glue panduan pemrograman](edit-script.md).

**Skrip**  
Kode dalam Skrip mendefinisikan logika prosedural tugas Anda. Anda dapat membuat kode skrip dengan Python 3.6 atau Python 3.9. Anda dapat mengedit skrip diAWS Glue Studio.

**Unit pengolahan data**  
Jumlah maksimum unit pemrosesan AWS Glue data (DPUs) yang dapat dialokasikan saat pekerjaan ini berjalan. DPU adalah ukuran relatif daya pemrosesan yang terdiri dari 4 v CPUs kapasitas komputasi dan memori 16 GB. Untuk informasi selengkapnya, lihat [harga AWS Glue](https://aws.amazon.com/glue/pricing/).   
Anda dapat mengatur nilai-nya ke 0,0625 atau 1. Default-nya adalah 0,0625. Dalam kedua kasus, disk lokal untuk contoh akan menjadi 20GB.

### CLI
<a name="create-job-python-properties-cli"></a>

 Anda juga dapat membuat pekerjaan **shell Python** menggunakan AWS CLI, seperti pada contoh berikut. 

```
 aws glue create-job --name python-job-cli --role Glue_DefaultRole 
     --command '{"Name" :  "pythonshell", "PythonVersion": "3.9", "ScriptLocation" : "s3://amzn-s3-demo-bucket/scriptname.py"}'  
     --max-capacity 0.0625
```

**catatan**  
 Anda tidak perlu menentukan versi AWS Glue karena parameter `--glue-version` tidak berlaku untuk pekerjaan AWS Glue shell. Setiap versi yang ditentukan akan diabaikan. 

 Pekerjaan yang Anda buat dengan AWS CLI default ke Python 3. Versi Python yang valid adalah 3 (sesuai dengan 3.6), dan 3.9. Untuk menentukan Python 3.6, tambahkan tuple ini ke parameter: `--command` `"PythonVersion":"3"` 

 Untuk menentukan Python 3.9, tambahkan tuple ini ke parameter: `--command` `"PythonVersion":"3.9"` 

 Untuk mengatur kapasitas maksimal yang digunakan oleh tugas shell Python, berikan parameter `--max-capacity`. Untuk tugas shell Python, parameter `--allocated-capacity` tidak dapat digunakan. 

## Pustaka yang didukung untuk pekerjaan shell Python
<a name="python-shell-supported-library"></a>

 Dalam Python shell menggunakan Python 3.9, Anda dapat memilih set perpustakaan untuk menggunakan set perpustakaan pra-paket untuk kebutuhan Anda. Anda dapat menggunakan `library-set` opsi untuk memilih kumpulan perpustakaan. Nilai yang valid adalah`analytics`, dan`none`. 

Lingkungan untuk menjalankan tugas shell Python mendukung perpustakaan berikut: 


| Versi Python | Python 3.6 | Python 3.9 | 
| --- | --- | --- | 
| Set perpustakaan | N/A | analitik | tidak satupun | 
| avro |  | 1.11.0 |  | 
| awscli | 116.242 | 1.23.5 | 1.23.5 | 
| awswrangler |  | 2.15.1 |  | 
| botocore | 1.12.232 | 1.24.21 | 1.23.5 | 
| boto3 | 1.9.203 | 1.21.21 |  | 
| elasticsearch |  | 8.2.0 |  | 
| numpy | 1.16.2 | 1.22.3 |  | 
| panda | 0.24.2 | 1.4.2 |  | 
| psycopg2 |  | 2.9.3 |  | 
| pyathena |  | 2.5.3 |  | 
| PyGreSQL | 5.0.6 |  |  | 
| PyMySQL |  | 1.0.2 |  | 
| pyodbc |  | 4.0.32 |  | 
| pyorc |  | 0.6.0 |  | 
| konektor pergeseran merah |  | 2.0.907 |  | 
| permintaan | 2.22.0 | 2.27.1 |  | 
| scikit-belajar | 0.20.3 | 1.0.2 |  | 
| scipy | 1.2.1 | 1.8.0 |  | 
| SQLAlchemy |  | 1.4.36 |  | 
| s3fs |  | 2022.3.0 |  | 

Anda dapat menggunakan perpustakaan `NumPy` dalam sebuah tugas shell Python untuk komputasi ilmiah. Untuk informasi selengkapnya, lihat [NumPy](http://www.numpy.org). Contoh berikut menunjukkan NumPy skrip yang dapat digunakan dalam pekerjaan shell Python. Skrip mencetak "Hello world" dan hasil dari beberapa perhitungan matematis.

```
import numpy as np
print("Hello world")

a = np.array([20,30,40,50])
print(a)

b = np.arange( 4 )

print(b)

c = a-b

print(c)

d = b**2

print(d)
```

## Menyediakan pustaka Python Anda sendiri
<a name="create-python-extra-library"></a>

### Menggunakan PIP
<a name="create-python-extra-library-pip"></a>

Python shell menggunakan Python 3.9 memungkinkan Anda menyediakan modul Python tambahan atau versi yang berbeda di tingkat pekerjaan. Anda dapat menggunakan `--additional-python-modules` dengan daftar modul Python yang dipisahkan koma untuk menambahkan modul baru atau mengubah versi dari modul yang ada. Anda tidak dapat menyediakan modul Python khusus yang dihosting di Amazon S3 dengan parameter ini saat menggunakan pekerjaan shell Python.

Misalnya untuk memperbarui atau menambahkan `scikit-learn` modul baru gunakan kunci dan nilai berikut:`"--additional-python-modules", "scikit-learn==0.21.3"`.

AWS Glue menggunakan Python Package Installer (pip3) untuk menginstal modul tambahan. Anda dapat meneruskan opsi pip3 tambahan di dalam nilai. `--additional-python-modules` Misalnya, `"scikit-learn==0.21.3 -i https://pypi.python.org/simple/"`. Ketidakcocokan atau batasan apa pun dari pip3 berlaku.

**catatan**  
Untuk menghindari ketidakcocokan di masa mendatang, sebaiknya gunakan library yang dibuat untuk Python 3.9.

### Menggunakan file Egg atau Whl
<a name="create-python-extra-library-egg-whl"></a>

Anda mungkin sudah memiliki satu atau beberapa perpustakaan Python yang dikemas sebagai sebuah file `.egg` atau `.whl`. Jika demikian, Anda dapat menentukannya ke tugas Anda dengan menggunakan AWS Command Line Interface (AWS CLI) pada bendera "`--extra-py-files`", seperti dalam contoh berikut.

```
aws glue create-job --name python-redshift-test-cli --role role --command '{"Name" :  "pythonshell", "ScriptLocation" : "s3://MyBucket/python/library/redshift_test.py"}' 
     --connections Connections=connection-name --default-arguments '{"--extra-py-files" : ["s3://amzn-s3-demo-bucket/EGG-FILE", "s3://amzn-s3-demo-bucket/WHEEL-FILE"]}'
```

Jika Anda tidak benar-benar mengetahui cara membuat sebuah file `.egg` atau `.whl` dari perpustakaan Python, maka gunakan langkah-langkah berikut. Contoh ini berlaku di macOS, Linux, dan Windows Subsystem for Linux (WSL).

**Untuk membuat sebuah file .egg atau file .whl Python**

1. Buat klaster Amazon Redshift di sebuah virtual private cloud (VPC), dan tambahkan beberapa data ke tabel.

1. Buat AWS Glue koneksi untuk VPC-SecurityGroup-Subnet kombinasi yang Anda gunakan untuk membuat cluster. Menguji apakah koneksi berhasil.

1. Buatlah sebuah direktori bernama `redshift_example`, dan buatlah file bernama `setup.py`. Tempel kode berikut ke `setup.py`.

   ```
   from setuptools import setup
   
   setup(
       name="redshift_module",
       version="0.1",
       packages=['redshift_module']
   )
   ```

1. Pada direktori `redshift_example`, buat `redshift_module`. Pada direktori `redshift_module`, buat file `__init__.py` dan file `pygresql_redshift_common.py`.

1. Biarkan file `__init__.py` kosong. Di `pygresql_redshift_common.py`, tempel kode berikut. Ganti *port**db\$1name*,*user*,, dan *password\$1for\$1user* dengan detail khusus untuk cluster Amazon Redshift Anda. Ganti *table\$1name* dengan nama tabel di Amazon Redshift.

   ```
   import pg
   
   
   def get_connection(host):
       rs_conn_string = "host=%s port=%s dbname=%s user=%s password=%s" % (
           host, port, db_name, user, password_for_user)
   
       rs_conn = pg.connect(dbname=rs_conn_string)
       rs_conn.query("set statement_timeout = 1200000")
       return rs_conn
   
   
   def query(con):
       statement = "Select * from table_name;"
       res = con.query(statement)
       return res
   ```

1. Jika Anda belum sampai di langkah itu, ubah ke direktori `redshift_example`.

1. Lakukan salah satu tindakan berikut:
   + Untuk membuat sebuah file `.egg`, jalankan perintah berikut.

     ```
     python setup.py bdist_egg
     ```
   + Untuk membuat sebuah file `.whl`, jalankan perintah berikut.

     ```
     python setup.py bdist_wheel
     ```

1. Menginstal dependensi yang diperlukan untuk perintah sebelumnya.

1. Perintah tersebut membuat file di direktori `dist`:
   + Jika Anda membuat sebuah file egg, namanya adalah `redshift_module-0.1-py2.7.egg`.
   + Jika Anda membuat sebuah file roda, namanya adalah `redshift_module-0.1-py2.7-none-any.whl`.

   Unggah file ini ke Amazon S3.

   Dalam contoh ini, path file yang diunggah adalah *s3://amzn-s3-demo-bucket/EGG-FILE* atau *s3://amzn-s3-demo-bucket/WHEEL-FILE*. 

1. Buat sebuah file Python untuk digunakan sebagai skrip untuk tugas AWS Glue, dan tambahkan kode berikut ke file tersebut.

   ```
   from redshift_module import pygresql_redshift_common as rs_common
   
   con1 = rs_common.get_connection(redshift_endpoint)
   res = rs_common.query(con1)
   
   print "Rows in the table cities are: "
   
   print res
   ```

1. Unggah file sebelumnya ke Amazon S3. Dalam contoh ini, path file yang diunggah adalah *s3://amzn-s3-demo-bucket/scriptname.py*. 

1. Buat sebuah tugas shell Python menggunakan skrip ini. Pada konsol AWS Glue, pada halaman **Properti Tugas**, tentukan path ke file `.egg/.whl` pada kotak **Path perpustakaan Python**. Jika Anda memiliki beberapa file `.egg/.whl` dan file Python, berikan daftar dipisahkan koma dalam kotak ini. 

   Saat memodifikasi atau mengganti nama `.egg`, nama file harus menggunakan nama default yang dihasilkan oleh perintah "python setup.py bdist\$1egg" atau harus mematuhi konvensi penamaan modul Python. Untuk informasi selengkapnya, lihat bagian [Panduan Gaya untuk Kode Python](https://www.python.org/dev/peps/pep-0008/). 

   Menggunakan AWS CLI, membuat pekerjaan dengan perintah, seperti pada contoh berikut.

   ```
   aws glue create-job --name python-redshift-test-cli --role Role --command '{"Name" :  "pythonshell", "ScriptLocation" : "s3://amzn-s3-demo-bucket/scriptname.py"}' 
        --connections Connections="connection-name" --default-arguments '{"--extra-py-files" : ["s3://amzn-s3-demo-bucket/EGG-FILE", "s3://amzn-s3-demo-bucket/WHEEL-FILE"]}'
   ```

   Saat pekerjaan berjalan, skrip mencetak baris yang dibuat dalam *table\$1name* tabel di cluster Amazon Redshift.

## Gunakan AWS CloudFormation dengan pekerjaan shell Python di AWS Glue
<a name="python-shell-jobs-cloudformation"></a>

 Anda dapat menggunakan AWS CloudFormation dengan pekerjaan shell Python di. AWS Glue Berikut ini adalah contohnya: 

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  Python39Job:
    Type: 'AWS::Glue::Job'
    Properties:
      Command:
        Name: pythonshell
        PythonVersion: '3.9'
        ScriptLocation: 's3://bucket/location'
      MaxRetries: 0
      Name: python-39-job
      Role: RoleName
```

 Grup Amazon CloudWatch Logs untuk output pekerjaan shell Python adalah. `/aws-glue/python-jobs/output` Untuk kesalahan, lihat grup log `/aws-glue/python-jobs/error`. 

## Migrasi dari Python shell 3.6 ke Python shell 3.9
<a name="migrating-version-pyshell36-to-pyshell39"></a>

 Untuk memigrasikan pekerjaan shell Python Anda ke versi terbaru: AWS Glue 

1.  Di AWS Glue console ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)), pilih pekerjaan shell Python yang ada. 

1.  **Di tab **Job** details, atur versi Python ke `Python 3.9` dan pilih Save.** 

1.  Pastikan skrip pekerjaan Anda kompatibel dengan Python 3.9 dan berjalan dengan sukses. 

# Migrasi dari pekerjaan shell AWS Glue Python
<a name="pyshell-migration"></a>

 AWS meluncurkan pekerjaan shell AWS Glue Python pada tahun 2018 AWS meluncurkan pekerjaan shell Glue AWS Python pada tahun 2018 untuk memberi pelanggan cara mudah menjalankan skrip Python untuk pekerjaan ETL small-to-medium berukuran, dan untuk memicu kueri SQL. Namun, sekarang ada opsi yang lebih modern dan fleksibel untuk mengatasi beban kerja yang sedang PythonShell berjalan. Topik ini menjelaskan cara memigrasikan beban kerja Anda dari pekerjaan shell Glue AWS Python ke salah satu opsi alternatif ini untuk memanfaatkan kemampuan baru yang tersedia. 

 Topik ini menjelaskan cara bermigrasi dari pekerjaan shell AWS Glue Python ke opsi alternatif. 

## Migrasi beban kerja ke pekerjaan AWS Glue Spark
<a name="pyshell-migration-to-glue-spark-jobs"></a>

 [AWS Glue Spark dan PySpark pekerjaan](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html) memungkinkan Anda menjalankan beban kerja Anda secara terdistribusi. Karena pekerjaan AWS Glue Python Shell dan pekerjaan AWS Glue Spark berjalan pada platform yang sama, mudah untuk bermigrasi, dan Anda dapat terus menggunakan fitur AWS Glue yang ada yang Anda gunakan dengan pekerjaan Python Shell, seperti Glue AWS Workflows, Glue AWS Triggers, Amazon EventBridge integrasi Glue, instalasi paket berbasis AWS \$1 Pip, dan sebagainya. 

 Namun, pekerjaan AWS Glue Spark dirancang untuk menjalankan beban kerja Spark, dan jumlah minimum pekerja adalah 2. Jika Anda bermigrasi dari pekerjaan Python Shell tanpa memodifikasi skrip Anda, hanya satu pekerja yang akan benar-benar digunakan, dan pekerja lainnya akan tetap menganggur. Ini akan meningkatkan biaya Anda. 

 Untuk membuatnya efisien, tulis ulang skrip pekerjaan Python Anda untuk memanfaatkan kemampuan Spark dan mendistribusikan beban kerja ke beberapa pekerja. Jika skrip Python Anda berbasis Pandas, mudah untuk bermigrasi menggunakan API Pandas Baru di Spark. Pelajari lebih lanjut tentang ini di [AWS Big Data Blog: Selami jauh ke dalam AWS Glue 4.0 untuk Apache Spark](https://aws.amazon.com/blogs/big-data/dive-deep-into-aws-glue-4-0-for-apache-spark/). 

## Migrasi beban kerja ke AWS Lambda
<a name="pyshell-migration-to-aws-lambda"></a>

 AWS Lambda adalah layanan komputasi tanpa server yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Karena AWS Lambda memiliki waktu startup yang lebih rendah dan opsi yang lebih fleksibel untuk kapasitas komputasi, Anda bisa mendapatkan keuntungan dari keuntungan ini. Untuk mengelola pustaka Python tambahan, pekerjaan Glue AWS Python Shell menggunakan instalasi berbasis PIP. Namun, untuk AWS Lambda, Anda perlu memilih salah satu opsi berikut: arsip zip, gambar wadah, atau Lapisan Lambda. 

 Di sisi lain, AWS Lambda batas waktu maksimum adalah 900 detik (15 menit). Jika durasi pekerjaan dari beban kerja AWS Glue Python Shell Anda yang ada lebih dari itu, atau jika beban kerja Anda memiliki pola runcing yang dapat menyebabkan durasi pekerjaan lebih lama, maka sebaiknya jelajahi opsi lain. AWS Lambda

## Memigrasi beban kerja ke Amazon ECS/Fargate
<a name="pyshell-migration-to-ecs-aws-fargate"></a>

 Amazon Elastic Container Service (Amazon ECS) adalah layanan terkelola penuh yang menyederhanakan penerapan, pengelolaan, dan penskalaan aplikasi kontainer. AWS Fargate adalah mesin komputasi tanpa server untuk beban kerja kontainer yang berjalan di Amazon ECS dan (Amazon EKS). Amazon Elastic Kubernetes Service Tidak ada batas waktu maksimum di Amazon ECS dan Fargate, jadi ini adalah pilihan yang baik untuk pekerjaan jangka panjang. Karena Anda memiliki kontrol penuh atas gambar kontainer Anda, Anda dapat membawa skrip Python dan pustaka Python tambahan ke dalam wadah dan menggunakannya. Namun, Anda perlu mengkontainerisasi skrip Python Anda untuk menggunakan pendekatan ini. 

## Memigrasi beban kerja ke Alur Kerja Terkelola Amazon untuk Operator Python Apache Airflow
<a name="pyshell-migration-to-amazon-mwaa-python-operator"></a>

 Alur Kerja Terkelola Amazon untuk Apache Airflow (Alur Kerja Terkelola untuk Apache Airflow) adalah layanan orkestrasi terkelola untuk Apache Airflow yang memudahkan penyiapan dan pengoperasian pipeline data di cloud dalam skala besar. end-to-end Jika Anda sudah memiliki lingkungan MWAA, akan mudah untuk menggunakan operator Python alih-alih pekerjaan Glue AWS Python Shell. Operator Python adalah operator yang menjalankan kode Python di dalam alur kerja Airflow. Namun, jika Anda tidak memiliki lingkungan MWAA yang ada, kami sarankan untuk menjelajahi opsi lain. 

## Migrasi beban kerja ke pekerjaan pelatihan Amazon SageMaker AI AI
<a name="pyshell-migration-to-amazon-sagemaker-ai"></a>

 Amazon SageMaker AI Pelatihan adalah layanan pembelajaran mesin (ML) yang dikelola sepenuhnya yang ditawarkan oleh Amazon SageMaker AI yang membantu Anda melatih berbagai model ML secara efisien dalam skala besar. Inti dari pekerjaan Amazon SageMaker AI AI adalah kontainerisasi beban kerja ML dan kemampuan mengelola AWS sumber daya komputasi. Jika Anda lebih suka lingkungan tanpa server di mana tidak ada batas waktu maksimum, pekerjaan pelatihan Amazon SageMaker AI AI bisa sangat cocok untuk Anda. Namun, latensi startup cenderung lebih lama dari pekerjaan AWS Glue Python Shell. Untuk pekerjaan yang sensitif terhadap latensi, sebaiknya jelajahi opsi lain. 

# Pemantauan AWS Glue
<a name="monitor-glue"></a>

Pemantauan adalah bagian penting dari menjaga keandalan, ketersediaan, dan kinerja AWS Glue dan AWS solusi Anda yang lain. AWS menyediakan alat pemantauan yang dapat Anda gunakan untuk menonton AWS Glue, melaporkan ketika ada sesuatu yang salah, dan mengambil tindakan secara otomatis bila perlu:

Anda dapat menggunakan alat pemantauan otomatis berikut untuk melihat AWS Glue dan melaporkan saat terjadi kesalahan:
+ **Amazon CloudWatch Events memberikan aliran peristiwa** sistem yang mendekati waktu nyata yang menjelaskan perubahan AWS sumber daya. CloudWatch Acara memungkinkan komputasi berbasis peristiwa otomatis. Anda dapat menulis aturan yang mengawasi peristiwa tertentu dan memicu tindakan otomatis di AWS layanan lain saat peristiwa ini terjadi. Untuk informasi selengkapnya, lihat [Panduan Pengguna CloudWatch Acara Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/).
+ **Amazon CloudWatch Logs** memungkinkan Anda memantau, menyimpan, dan mengakses file log Anda dari EC2 instans Amazon AWS CloudTrail, dan sumber lainnya. CloudWatch Log dapat memantau informasi dalam file log dan memberi tahu Anda ketika ambang batas tertentu terpenuhi. Anda juga dapat mengarsipkan data log dalam penyimpanan yang sangat durabel. Untuk informasi selengkapnya, lihat [Panduan Pengguna Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/).
+ **AWS CloudTrail**menangkap panggilan API dan peristiwa terkait yang dibuat oleh atau atas nama AWS akun Anda dan mengirimkan file log ke bucket Amazon S3 yang Anda tentukan. Anda dapat mengidentifikasi pengguna dan akun mana yang dipanggil AWS, alamat IP sumber dari mana panggilan dilakukan, dan kapan panggilan terjadi. Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

Selain itu, Anda memiliki akses ke wawasan berikut di AWS Glue konsol untuk membantu Anda men-debug dan pekerjaan profil:
+ Spark jobs — Anda dapat melihat visualisasi rangkaian CloudWatch metrik yang dipilih, dan pekerjaan yang lebih baru memiliki akses ke UI Spark. Untuk informasi selengkapnya, lihat [Lowongan kerja Monitoring AWS Glue Spark](monitor-spark.md).
+ Pekerjaan Ray — Anda dapat melihat visualisasi seri CloudWatch metrik yang dipilih. Untuk informasi selengkapnya, lihat [Memantau pekerjaan Ray dengan metrik](author-job-ray-monitor.md).

**Topics**
+ [AWS tag di AWS Glue](monitor-tags.md)
+ [Mengotomatisasi dengan AWS Glue EventBridge](automating-awsglue-with-cloudwatch-events.md)
+ [Memantau AWS Glue sumber daya](monitor-resource-metrics.md)
+ [Pencatatan panggilan AWS Glue API dengan AWS CloudTrail](monitor-cloudtrail.md)

# AWS tag di AWS Glue
<a name="monitor-tags"></a>

Untuk membantu Anda mengelola sumber daya AWS Glue, Anda dapat secara opsional menetapkan tag Anda sendiri untuk beberapa jenis sumber daya AWS Glue. Tag adalah label yang Anda tetapkan ke AWS sumber daya. Setiap tag terdiri dari kunci dan nilai opsional, yang keduanya Anda tentukan. Anda menggunakan tag di AWS Glue untuk mengorganisasi dan mengatur sumber daya Anda. Tag dapat digunakan untuk membuat laporan hitungan biaya dan membatasi akses ke sumber daya. Jika Anda menggunakan AWS Identity and Access Management, Anda dapat mengontrol pengguna mana di AWS akun Anda yang memiliki izin untuk membuat, mengedit, atau menghapus tag. Selain izin untuk memanggil tag terkait APIs, Anda juga memerlukan `glue:GetConnection` izin untuk memanggil tagging APIs pada koneksi, dan izin untuk memanggil tagging pada database. `glue:GetDatabase` APIs Untuk informasi selengkapnya, lihat [ABAC dengan AWS Glue](security_iam_service-with-iam.md#security_iam_service-with-iam-tags). 

Di AWS Glue, Anda dapat menandai sumber daya berikut:
+ Koneksi
+ Basis Data
+ Crawler
+ Sesi interaktif
+ Titik akhir pengembangan
+ Tugas
+ Pemicu
+ Alur kerja
+ Cetak biru
+ Transformasi Machine Learning
+ Aturan kualitas data
+ Skema aliran
+ Pendaftaran skema aliran

**catatan**  
Sebagai praktik terbaik, untuk memungkinkan penandaan pada sumber daya AWS Glue, selalu sertakan tindakan `glue:TagResource` dalam kebijakan Anda.

Pertimbangkan hal berikut saat menggunakan tag dengan AWS Glue.
+ Maksimum 50 tag didukung untuk setiap entitas.
+ Di AWS Glue, Anda menentukan tag sebagai daftar pasangan nilai kunci dalam format `{"string": "string" ...}`
+ Bila Anda membuat tag pada sebuah objek, maka kunci tag adalah wajib, sementara nilai tag adalah opsional.
+ Kunci dan nilai tag peka huruf besar kecil.
+ Kunci tag dan nilai tag tidak boleh berisi prefiks *aws*. Tidak ada operasi yang diizinkan pada tag tersebut.
+ Panjang kunci tag maksimum adalah 128 karakter Unicode dalam UTF-8. Kunci tag tidak boleh kosong atau nol.
+ Panjang nilai tag maksimum adalah 256 karakter Unicode dalam UTF-8. Nilai tag bisa kosong atau nol.

## Menandai dukungan untuk koneksi AWS Glue
<a name="tag-connections"></a>

Anda dapat membatasi`CreateConnection`,`UpdateConnection`, `GetConnection` dan, izin `DeleteConnection` tindakan berdasarkan tag sumber daya. Ini memungkinkan Anda untuk menerapkan kontrol akses hak istimewa paling sedikit pada AWS Glue pekerjaan dengan sumber data JDBC yang perlu mengambil informasi koneksi JDBC dari Katalog Data. 

**Contoh penggunaan**  
Buat AWS Glue koneksi dengan tag ["connection-category”, “dev-test"].

Tentukan kondisi tag untuk `GetConnection` tindakan dalam kebijakan IAM.

```
{
   "Effect": "Allow",
   "Action": [
     "glue:GetConnection"
     ],
   "Resource": "*",
   "Condition": {
     "ForAnyValue:StringEquals": {
       "aws:ResourceTag/tagKey": "dev-test"
     }
   }
 }
```

## Contoh
<a name="TagExamples"></a>

Contoh berikut membuat tugas dengan tag yang ditetapkan. 

**AWS CLI**

```
aws glue create-job --name job-test-tags --role MyJobRole --command Name=glueetl,ScriptLocation=S3://aws-glue-scripts//prod-job1 
--tags key1=value1,key2=value2
```

**CloudFormation JSON**

```
{
  "Description": "AWS Glue Job Test Tags",
  "Resources": {
    "MyJobRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "glue.amazonaws.com"
                ]
              },
              "Action": [
                "sts:AssumeRole"
              ]
            }
          ]
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyName": "root",
            "PolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": [
                {
                  "Effect": "Allow",
                  "Action": "*",
                  "Resource": "*"
                }
              ]
            }
          }
        ]
      }
    },
    "MyJob": {
      "Type": "AWS::Glue::Job",
      "Properties": {
        "Command": {
          "Name": "glueetl",
          "ScriptLocation": "s3://aws-glue-scripts//prod-job1"
        },
        "DefaultArguments": {
          "--job-bookmark-option": "job-bookmark-enable"
        },
        "ExecutionProperty": {
          "MaxConcurrentRuns": 2
        },
        "MaxRetries": 0,
        "Name": "cf-job1",
        "Role": {
           "Ref": "MyJobRole",
           "Tags": {
                "key1": "value1", 
                "key2": "value2"
           } 
        }
      }
    }
  }
}
```

**CloudFormation YAML**

```
Description: AWS Glue Job Test Tags
Resources:
  MyJobRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - glue.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: "/"
      Policies:
        - PolicyName: root
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action: "*"
                Resource: "*"
  MyJob:
    Type: AWS::Glue::Job
    Properties:
      Command:
        Name: glueetl
        ScriptLocation: s3://aws-glue-scripts//prod-job1
      DefaultArguments:
        "--job-bookmark-option": job-bookmark-enable
      ExecutionProperty:
        MaxConcurrentRuns: 2
      MaxRetries: 0
      Name: cf-job1
      Role:
        Ref: MyJobRole
        Tags:
           key1: value1
           key2: value2
```

Untuk mengetahui informasi lebih lanjut, lihat [AWS Strategi Penandaan](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/). 

Untuk informasi tentang cara mengontrol akses menggunakan tag, lihat [ABAC dengan AWS Glue](security_iam_service-with-iam.md#security_iam_service-with-iam-tags).

# Mengotomatisasi dengan AWS Glue EventBridge
<a name="automating-awsglue-with-cloudwatch-events"></a>

Anda dapat menggunakan Amazon EventBridge untuk mengotomatiskan AWS layanan Anda dan merespons secara otomatis peristiwa sistem seperti masalah ketersediaan aplikasi atau perubahan sumber daya. Acara dari AWS layanan dikirim ke EventBridge dalam waktu dekat. Anda dapat menulis aturan sederhana untuk menunjukkan kejadian mana yang sesuai kepentingan Anda, dan tindakan otomatis apa yang diambil ketika suatu kejadian sesuai dengan suatu aturan. Tindakan yang dapat dipicu secara otomatis meliputi hal-hal berikut:
+ Memanggil fungsi AWS Lambda 
+ Memanggil Perintah Amazon EC2 Run
+ Mengirim peristiwa ke Amazon Kinesis Data Streams
+ Mengaktifkan mesin AWS Step Functions negara
+ Memberi tahu topik Amazon SNS atau antrean Amazon SQS

Beberapa contoh penggunaan EventBridge dengan AWS Glue meliputi yang berikut:
+ Mengaktifkan fungsi Lambda ketika tugas ETL berhasil
+ Memberi tahu topik Amazon SNS saat tugas ETL gagal

Berikut ini EventBridge dihasilkan olehAWS Glue.
+ Peristiwa untuk `"detail-type":"Glue Job State Change"` yang dihasilkan untuk `SUCCEEDED`, `FAILED`, `TIMEOUT`, dan `STOPPED`.
+ Peristiwa untuk `"detail-type":"Glue Job Run Status"` yang dihasilkan untuk `RUNNING`, `STARTING`, dan eksekusi tugas `STOPPING` ketika mereka melampaui ambang batas notifikasi penundaan tugas. Anda harus menetapkan properti ambang notifikasi penundaan pekerjaan untuk menerima peristiwa ini.

  Hanya satu peristiwa yang dihasilkan per status menjalankan pekerjaan ketika ambang pemberitahuan penundaan pekerjaan terlampaui.
+ Peristiwa untuk `"detail-type":"Glue Crawler State Change"` yang dihasilkan untuk `Started`, `Succeeded`, dan `Failed`.
+ Peristiwa untuk `“detail_type”:“Glue Scheduled Crawler Invocation Failure”` dihasilkan saat crawler terjadwal gagal dimulai. Dalam detail notifikasi tersebut:
  + `customerId`berisi ID akun pelanggan.
  + `crawlerName`berisi nama crawler yang gagal memulai.
  + `errorMessage`berisi pesan pengecualian dari kegagalan pemanggilan.
+ Peristiwa untuk `“detail_type”:“Glue Auto Statistics Invocation Failure“` dihasilkan saat tugas statistik kolom yang dikelola otomatis gagal dimulai. Dalam detail notifikasi tersebut:
  + `catalogId`berisi ID yang terkait dengan katalog.
  + `databaseName`berisi nama database yang terpengaruh.
  + `tableName`berisi nama tabel yang terpengaruh.
  + `errorMessage`berisi pesan pengecualian dari kegagalan pemanggilan.
+ Peristiwa untuk `“detail_type”:“Glue Scheduled Statistics Invocation Failure”` dihasilkan ketika tugas statistik kolom terjadwal (cron) gagal dimulai. Dalam detail notifikasi tersebut:
  + `catalogId`berisi ID yang terkait dengan katalog.
  + `databaseName`berisi nama database yang terpengaruh.
  + `tableName`berisi nama tabel yang terpengaruh.
  + `errorMessage`berisi pesan pengecualian dari kegagalan pemanggilan.
+ Peristiwa untuk `“detail_type”:“Glue Statistics Task Started”` dihasilkan saat tugas statistik kolom dijalankan dimulai.
+ Peristiwa untuk `“detail_type”:“Glue Statistics Task Succeeded”` dihasilkan ketika tugas statistik kolom berjalan berhasil.
+ Peristiwa untuk `“detail_type”:“Glue Statistics Task Failed”` dihasilkan ketika tugas statistik kolom dijalankan gagal.
+ Peristiwa untuk `"detail-type":"Glue Data Catalog Database State Change"` yang dihasilkan untuk `CreateDatabase`, `DeleteDatabase`, `CreateTable`, `DeleteTable` dan `BatchDeleteTable`. Misalnya, jika tabel dibuat atau dihapus, pemberitahuan dikirim ke EventBridge. Perhatikan bahwa Anda tidak dapat menulis program yang tergantung pada urutan keberadaan atau notifikasi peristiwa, karena program tersebut mungkin tidak berurutan atau hilang. Peristiwa dipancarkan atas dasar upaya terbaik. Dalam detail notifikasi tersebut:
  + `typeOfChange` memberi tahu nama operasi API.
  + `databaseName` memberi tahu nama basis data yang terpengaruh.
  + `changedTables` memberi tahu hingga 100 nama tabel yang terpengaruh per notifikasi. Ketika nama tabel panjang, mungkin dibuat dalam beberapa notifikasi.
+ Acara untuk `"detail-type":"Glue Data Catalog Table State Change"` dihasilkan untuk`UpdateTable`,`CreatePartition`,`BatchCreatePartition`,`UpdatePartition`,`DeletePartition`, `BatchUpdatePartition` dan`BatchDeletePartition`. Misalnya, jika tabel atau partisi diperbarui, pemberitahuan dikirim ke EventBridge. Perhatikan bahwa Anda tidak dapat menulis program yang tergantung pada urutan keberadaan atau notifikasi peristiwa, karena program tersebut mungkin tidak berurutan atau hilang. Peristiwa dipancarkan atas dasar upaya terbaik. Dalam detail notifikasi tersebut:
  + `typeOfChange` memberi tahu nama operasi API.
  + `databaseName` memberi tahu nama basis data yang berisi sumber daya yang terpengaruh.
  + `tableName` memberi tahu nama tabel yang terpengaruh.
  + `changedPartitions` menentukan hingga 100 partisi yang terpengaruh dalam satu notifikasi. Ketika nama partisi panjang, mungkin dibuat dalam beberapa notifikasi.

    Misalnya jika ada dua tombol partisi, `Year` dan `Month`, maka `"2018,01", "2018,02"` akan memodifikasi partisi adalah `"Year=2018" and "Month=01"` dan partisi adalah `"Year=2018" and "Month=02"`.

    ```
    {
        "version":"0",
        "id":"abcdef00-1234-5678-9abc-def012345678",
        "detail-type":"Glue Data Catalog Table State Change",
        "source":"aws.glue",
        "account":"123456789012",
        "time":"2017-09-07T18:57:21Z",
        "region":"us-west-2",
        "resources":["arn:aws:glue:us-west-2:123456789012:database/default/foo"],
        "detail":{
            "changedPartitions": [
                "2018,01",
                "2018,02"
            ],
            "databaseName": "default",
            "tableName": "foo",
            "typeOfChange": "BatchCreatePartition"
            }
    }
    ```

Untuk informasi selengkapnya, lihat [Panduan Pengguna CloudWatch Acara Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/). Untuk peristiwa khusus pada AWS Glue, lihat [Peristiwa AWS Glue](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#glue-event-types).

# Memantau AWS Glue sumber daya
<a name="monitor-resource-metrics"></a>

AWS Gluememiliki batasan layanan untuk melindungi pelanggan dari penyediaan berlebihan yang tidak terduga dan dari tindakan jahat yang dimaksudkan untuk meningkatkan tagihan Anda. Batas juga melindungi layanan. Masuk ke konsol Kuota AWS Layanan, pelanggan dapat melihat batas sumber daya mereka saat ini dan meminta peningkatan (jika perlu).

AWS Gluememungkinkan Anda melihat penggunaan sumber daya layanan sebagai persentase di Amazon CloudWatch dan mengonfigurasi CloudWatch alarm di dalamnya untuk memantau penggunaan. Amazon CloudWatch menyediakan pemantauan untuk AWS sumber daya dan aplikasi pelanggan yang berjalan di infrastruktur Amazon. Metrik tidak dipungut biaya untuk Anda. Metrik berikut didukung:
+ Jumlah alur kerja per akun
+ Jumlah pemicu per akun
+ Jumlah pekerjaan per akun
+ Jumlah pekerjaan bersamaan yang dijalankan per akun
+ Jumlah cetak biru per akun
+ Jumlah sesi interaktif per akun

## Mengkonfigurasi dan menggunakan metrik sumber daya
<a name="monitor-resource-metrics"></a>

Untuk menggunakan fitur ini, Anda dapat pergi ke CloudWatch konsol Amazon untuk melihat metrik dan mengonfigurasi alarm. Metrik berada di bawah namespace AWS/Glue dan merupakan persentase dari jumlah penggunaan sumber daya aktual dibagi dengan kuota sumber daya. CloudWatch Metrik dikirimkan ke akun Anda, yang tidak akan dikenakan biaya untuk Anda. Misalnya, jika Anda memiliki 10 alur kerja yang dibuat, dan kuota layanan Anda memungkinkan Anda memiliki 200 alur kerja maksimum, maka penggunaan Anda adalah 10/200 = 5%, dan dalam grafik, Anda akan melihat titik data 5 sebagai persentase. Untuk lebih spesifik:

```
Namespace: AWS/Glue
Metric name: ResourceUsage
Type: Resource
Resource: Workflow (or Trigger, Job, JobRun, Blueprint, InteractiveSession)
Service: Glue
Class: None
```

![\[Metrik sumber daya\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/resource_monitoring_1.png)


Untuk membuat alarm pada metrik di CloudWatch konsol:

1. Setelah Anda menemukan metrik, buka **Metrik grafik**.

1. Klik **Buat alarm** di bawah **Tindakan**.

1. Konfigurasikan alarm sesuai kebutuhan.

Kami memancarkan metrik setiap kali penggunaan sumber daya Anda mengalami perubahan (seperti kenaikan atau penurunan). Tetapi jika penggunaan sumber daya Anda tidak berubah, kami memancarkan metrik setiap jam, sehingga Anda memiliki grafik kontinu. CloudWatch Untuk menghindari kehilangan titik data, kami tidak menyarankan Anda untuk mengonfigurasi periode kurang dari 1 jam.

Anda juga dapat mengonfigurasi alarm menggunakan AWS CloudFormation seperti pada contoh berikut. Dalam contoh ini, setelah penggunaan sumber daya alur kerja mencapai 80%, itu memicu alarm untuk mengirim pesan ke topik SNS yang ada, di mana Anda dapat berlangganan untuk mendapatkan notifikasi.

```
{
	"Type": "AWS::CloudWatch::Alarm",
	"Properties": {
		"AlarmName": "WorkflowUsageAlarm",
		"ActionsEnabled": true,
		"OKActions": [],
		"AlarmActions": [
			"arn:aws:sns:af-south-1:085425700061:Default_CloudWatch_Alarms_Topic"
		],
		"InsufficientDataActions": [],
		"MetricName": "ResourceUsage",
		"Namespace": "AWS/Glue",
		"Statistic": "Maximum",
		"Dimensions": [{
				"Name": "Type",
				"Value": "Resource"
			},
			{
				"Name": "Resource",
				"Value": "Workflow"
			},
			{
				"Name": "Service",
				"Value": "Glue"
			},
			{
				"Name": "Class",
				"Value": "None"
			}
		],
		"Period": 3600,
		"EvaluationPeriods": 1,
		"DatapointsToAlarm": 1,
		"Threshold": 80,
		"ComparisonOperator": "GreaterThanThreshold",
		"TreatMissingData": "notBreaching"
	}
}
```

# Pencatatan panggilan AWS Glue API dengan AWS CloudTrail
<a name="monitor-cloudtrail"></a>

AWS Glueterintegrasi dengan AWS CloudTrail, layanan yang menyediakan catatan tindakan yang diambil oleh pengguna, peran, atau AWS layanan diAWS Glue. CloudTrail menangkap semua panggilan API untuk AWS Glue sebagai peristiwa. Panggilan yang direkam mencakup panggilan dari konsol AWS Glue dan panggilan kode ke operasi AWS Glue API ini. Jika Anda membuat jejak, Anda dapat mengaktifkan pengiriman CloudTrail acara secara berkelanjutan ke bucket Amazon S3, termasuk acara untuk. AWS Glue Jika Anda tidak mengonfigurasi jejak, Anda masih dapat melihat peristiwa terbaru di CloudTrail konsol dalam **Riwayat acara**. Dengan menggunakan informasi yang dikumpulkan oleh CloudTrail, Anda dapat menentukan permintaan yang dibuatAWS Glue, alamat IP dari mana permintaan dibuat, siapa yang membuat permintaan, kapan dibuat, dan detail tambahan. 

Untuk mempelajari selengkapnya CloudTrail, lihat [Panduan AWS CloudTrail Pengguna](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## AWS Glueinformasi di CloudTrail
<a name="monitor-cloudtrail-info"></a>

CloudTrail diaktifkan di AWS akun Anda saat Anda membuat akun. Ketika aktivitas terjadi diAWS Glue, aktivitas tersebut dicatat dalam suatu CloudTrail peristiwa bersama dengan peristiwa AWS layanan lainnya dalam **riwayat Acara**. Anda dapat melihat, mencari, dan mengunduh acara terbaru di AWS akun Anda. Untuk informasi selengkapnya, lihat [Melihat Acara dengan Riwayat CloudTrail Acara](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Untuk catatan peristiwa yang sedang berlangsung di AWS akun Anda, termasuk acara untukAWS Glue, buat jejak. *Jejak* memungkinkan CloudTrail untuk mengirimkan file log ke bucket Amazon S3. Secara default, saat Anda membuat jejak di konsol, jejak tersebut berlaku untuk semua AWS Wilayah. Jejak mencatat peristiwa dari semua Wilayah di AWS partisi dan mengirimkan file log ke bucket Amazon S3 yang Anda tentukan. Selain itu, Anda dapat mengonfigurasi AWS layanan lain untuk menganalisis lebih lanjut dan menindaklanjuti data peristiwa yang dikumpulkan dalam CloudTrail log. Untuk informasi selengkapnya, lihat berikut ini: 
+ [Membuat jejak untuk AWS akun Anda](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail layanan dan integrasi yang didukung](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Mengonfigurasi Notifikasi Amazon SNS untuk CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Menerima File CloudTrail Log dari Beberapa Wilayah](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) dan [Menerima File CloudTrail Log dari Beberapa Akun](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Semua AWS Glue tindakan dicatat oleh CloudTrail dan didokumentasikan dalam[AWS Glue API](aws-glue-api.md). Misalnya, panggilan ke`CreateDatabase`, `CreateTable` dan `CreateScript` tindakan menghasilkan entri dalam file CloudTrail log. 

Setiap entri peristiwa atau log berisi informasi tentang entitas yang membuat permintaan tersebut. Informasi identitas membantu Anda menentukan hal berikut ini: 
+ Apakah permintaan tersebut dibuat dengan kredensial root atau pengguna IAM.
+ Apakah permintaan tersebut dibuat dengan kredensial keamanan sementara untuk satu peran atau pengguna terfederasi.
+ Apakah permintaan itu dibuat oleh AWS layanan lain.

Untuk informasi lain, lihat [Elemen userIdentity CloudTrail ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

Namun, CloudTrail tidak mencatat semua informasi mengenai panggilan. Misalnya, itu tidak mencatat informasi sensitif tertentu, seperti yang `ConnectionProperties` digunakan dalam permintaan koneksi, dan mencatat sebagai `null` ganti tanggapan yang dikembalikan oleh yang berikut APIs:

```
BatchGetPartition       GetCrawlers          GetJobs          GetTable
CreateScript            GetCrawlerMetrics    GetJobRun        GetTables
GetCatalogImportStatus  GetDatabase          GetJobRuns       GetTableVersions
GetClassifier           GetDatabases         GetMapping       GetTrigger
GetClassifiers          GetDataflowGraph     GetObjects       GetTriggers
GetConnection           GetDevEndpoint       GetPartition     GetUserDefinedFunction
GetConnections          GetDevEndpoints      GetPartitions    GetUserDefinedFunctions
GetCrawler              GetJob               GetPlan
```

## Memahami entri file log AWS Glue
<a name="monitor-cloudtrail-logs"></a>

Trail adalah konfigurasi yang memungkinkan pengiriman peristiwa sebagai file log ke bucket Amazon S3 yang Anda tentukan. CloudTrail file log berisi satu atau lebih entri log. Peristiwa mewakili permintaan tunggal dari sumber manapun dan mencakup informasi tentang tindakan yang diminta, tanggal dan waktu tindakan, parameter permintaan, dan sebagainya. CloudTrail file log bukanlah jejak tumpukan yang diurutkan dari panggilan API publik, jadi file tersebut tidak muncul dalam urutan tertentu. 

Contoh berikut menunjukkan entri CloudTrail log yang menunjukkan `DeleteCrawler` tindakan.

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AKIAIOSFODNN7EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/johndoe",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "johndoe"
  },
  "eventTime": "2017-10-11T22:29:49Z",
  "eventSource": "glue.amazonaws.com",
  "eventName": "DeleteCrawler",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "72.21.198.64",
  "userAgent": "aws-cli/1.11.148 Python/3.6.1 Darwin/16.7.0 botocore/1.7.6",
  "requestParameters": {
    "name": "tes-alpha"
  },
  "responseElements": null,
  "requestID": "b16f4050-aed3-11e7-b0b3-75564a46954f",
  "eventID": "e73dd117-cfd1-47d1-9e2f-d1271cad838c",
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```

Contoh ini menunjukkan entri CloudTrail log yang menunjukkan `CreateConnection` tindakan.

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AKIAIOSFODNN7EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/johndoe",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "johndoe"
  },
  "eventTime": "2017-10-13T00:19:19Z",
  "eventSource": "glue.amazonaws.com",
  "eventName": "CreateConnection",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "72.21.198.66",
  "userAgent": "aws-cli/1.11.148 Python/3.6.1 Darwin/16.7.0 botocore/1.7.6",
  "requestParameters": {
    "connectionInput": {
      "name": "test-connection-alpha",
      "connectionType": "JDBC",
      "physicalConnectionRequirements": {
        "subnetId": "subnet-323232",
        "availabilityZone": "us-east-1a",
        "securityGroupIdList": [
          "sg-12121212"
        ]
      }
    }
  },
  "responseElements": null,
  "requestID": "27136ebc-afac-11e7-a7d6-ab217e5c3f19",
  "eventID": "e8b3baeb-c511-4597-880f-c16210c60a4a",
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```