

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

# 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.