

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

# Mengembangkan dan menguji skrip pekerjaan AWS Glue secara lokal
<a name="aws-glue-programming-etl-libraries"></a>

Saat Anda mengembangkan dan menguji skrip pekerjaan AWS Glue for Spark, ada beberapa opsi yang tersedia:
+ AWS Konsol Glue Studio
  + Editor visual
  + Editor skrip
  + AWS Notebook Glue Studio
+ Sesi interaktif
  + Buku catatan Jupyter
+ Gambar Docker
  + Pembangunan lokal
  + Pengembangan jarak jauh

Anda dapat memilih salah satu opsi di atas berdasarkan kebutuhan Anda.

Jika Anda lebih suka tidak ada kode atau kurang pengalaman kode, editor visual AWS Glue Studio adalah pilihan yang baik.

Jika Anda lebih suka pengalaman notebook interaktif, notebook AWS Glue Studio adalah pilihan yang baik. Untuk informasi selengkapnya, lihat [Menggunakan Notebook dengan AWS Glue Studio dan AWS Glue](https://docs.aws.amazon.com/glue/latest/ug/notebooks-chapter.html). Jika Anda ingin menggunakan lingkungan lokal Anda sendiri, sesi interaktif adalah pilihan yang baik. Untuk informasi selengkapnya, lihat [Menggunakan sesi interaktif dengan AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-chapter.html).

Jika Anda lebih suka pengalaman local/remote pengembangan, gambar Docker adalah pilihan yang baik. Ini membantu Anda mengembangkan dan menguji skrip pekerjaan AWS Glue untuk Spark di mana pun Anda inginkan tanpa menimbulkan biaya AWS Glue.

Jika Anda lebih suka pengembangan lokal tanpa Docker, menginstal direktori pustaka AWS Glue ETL secara lokal adalah pilihan yang baik.

## Mengembangkan menggunakan AWS Glue Studio
<a name="develop-using-studio"></a>

Editor visual AWS Glue Studio adalah antarmuka grafis yang memudahkan untuk membuat, menjalankan, dan memantau pekerjaan ekstrak, transformasi, dan pemuatan (ETL) di AWS Glue. Anda dapat menyusun alur kerja transformasi data secara visual dan menjalankannya dengan mulus di mesin ETL tanpa server berbasis Apache Spark AWS Glue. Anda dapat memeriksa skema dan hasil data di masing-masing langkah dari tugas tersebut. Untuk informasi selengkapnya, lihat [Panduan Pengguna AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/ug/what-is-glue-studio.html).

## Mengembangkan menggunakan sesi interaktif
<a name="develop-using-interactive-sessions"></a>

Sesi interaktif memungkinkan Anda untuk membangun dan menguji aplikasi dari lingkungan pilihan Anda. Untuk informasi selengkapnya, lihat [Menggunakan sesi interaktif dengan AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-chapter.html).

# Kembangkan dan uji AWS Glue pekerjaan secara lokal menggunakan image Docker
<a name="develop-local-docker-image"></a>

 Untuk platform data siap produksi, proses pengembangan dan CI/CD saluran untuk AWS Glue pekerjaan adalah topik utama. Anda dapat mengembangkan dan menguji AWS Glue pekerjaan secara fleksibel dalam wadah Docker. AWS Glue meng-host gambar Docker di Docker Hub untuk mengatur lingkungan pengembangan Anda dengan utilitas tambahan. Anda dapat menggunakan IDE, notebook, atau REPL pilihan Anda menggunakan pustaka AWS Glue ETL. Topik ini menjelaskan cara mengembangkan dan menguji pekerjaan AWS Glue versi 5.0 dalam wadah Docker menggunakan gambar Docker.

## Gambar Docker yang tersedia
<a name="develop-local-available-docker-images-ecr"></a>

 Gambar Docker berikut tersedia untuk AWS Glue [Amazon ECR](https://gallery.ecr.aws/glue/aws-glue-libs):. 
+  Untuk AWS Glue versi 5.0: `public.ecr.aws/glue/aws-glue-libs:5` 
+ Untuk AWS Glue versi 4.0: `public.ecr.aws/glue/aws-glue-libs:glue_libs_4.0.0_image_01`
+ Untuk AWS Glue versi 3.0: `public.ecr.aws/glue/aws-glue-libs:glue_libs_3.0.0_image_01`
+ Untuk AWS Glue versi 2.0: `public.ecr.aws/glue/aws-glue-libs:glue_libs_2.0.0_image_01`

**catatan**  
 AWS Glue Gambar Docker kompatibel dengan x86\$164 dan arm64. 

 Dalam contoh ini, kita menggunakan `public.ecr.aws/glue/aws-glue-libs:5` dan menjalankan container pada mesin lokal (Mac, Windows, atau Linux). Gambar kontainer ini telah diuji untuk pekerjaan Spark AWS Glue versi 5.0. Gambar berisi yang berikut: 
+  Amazon Linux 2023 
+  AWS Glue Perpustakaan ETL 
+  Apache Spark 3.5.4 
+  Buka perpustakaan format tabel; Apache Iceberg 1.7.1, Apache Hudi 0.15.0, dan Delta Lake 3.3.0 
+  AWS Glue Data Katalog Klien 
+  Amazon Redshift konektor untuk Apache Spark 
+  Amazon DynamoDB konektor untuk Apache Hadoop 

 Untuk menyiapkan wadah Anda, tarik gambar dari Galeri Publik ECR dan kemudian jalankan wadah. Topik ini menunjukkan cara menjalankan container Anda dengan metode berikut, tergantung pada kebutuhan Anda: 
+ `spark-submit`
+ Cangkang REPL `(pyspark)`
+ `pytest`
+ Kode Studio Visual

## Prasyarat
<a name="develop-local-docker-image-prereq"></a>

Sebelum Anda mulai, pastikan Docker diinstal dan daemon Docker sedang berjalan. Untuk petunjuk penginstalan, lihat dokumentasi Docker untuk [Mac](https://docs.docker.com/docker-for-mac/install/) atau [Linux](https://docs.docker.com/engine/install/). Mesin yang menjalankan Docker meng-host AWS Glue wadah. Juga pastikan bahwa Anda memiliki setidaknya 7 GB ruang disk untuk gambar pada host yang menjalankan Docker.

 Untuk informasi selengkapnya tentang pembatasan saat mengembangkan AWS Glue kode secara lokal, lihat [Pembatasan pengembangan lokal](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html#local-dev-restrictions). 

### Mengkonfigurasi AWS
<a name="develop-local-docker-image-config-aws-credentials"></a>

Untuk mengaktifkan panggilan AWS API dari penampung, siapkan AWS kredensil dengan mengikuti langkah-langkah berikut. Di bagian berikut, kami akan menggunakan profil AWS bernama ini.

1.  [Buat profil AWS bernama](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-files.html). 

1.  Buka `cmd` di Windows atau terminal Mac/Linux dan jalankan perintah berikut di terminal: 

   ```
   PROFILE_NAME="<your_profile_name>"
   ```

Di bagian berikut, kami menggunakan profil AWS bernama ini.

### 
<a name="develop-local-docker-pull-image-from-ecr-public"></a>

 Jika Anda menjalankan Docker di Windows, pilih ikon Docker (klik kanan) dan pilih **Beralih ke wadah Linux** sebelum menarik gambar. 

Jalankan perintah berikut untuk menarik gambar dari ECR Public:

```
docker pull public.ecr.aws/glue/aws-glue-libs:5 
```

## Jalankan wadah
<a name="develop-local-docker-image-setup-run"></a>

Anda sekarang dapat menjalankan wadah menggunakan gambar ini. Anda dapat memilih salah satu dari berikut berdasarkan kebutuhan Anda.

### spark-submit
<a name="develop-local-docker-image-setup-run-spark-submit"></a>

Anda dapat menjalankan skrip AWS Glue pekerjaan dengan menjalankan `spark-submit` perintah pada wadah. 

1.  Tulis skrip Anda dan simpan seperti `sample.py` pada contoh di bawah ini dan simpan di bawah `/local_path_to_workspace/src/` direktori menggunakan perintah berikut: 

   ```
   $ WORKSPACE_LOCATION=/local_path_to_workspace
   $ SCRIPT_FILE_NAME=sample.py
   $ mkdir -p ${WORKSPACE_LOCATION}/src
   $ vim ${WORKSPACE_LOCATION}/src/${SCRIPT_FILE_NAME}
   ```

1.  Variabel ini digunakan dalam perintah docker run di bawah ini. Kode sampel (sample.py) yang digunakan dalam perintah spark-submit di bawah ini disertakan dalam lampiran di akhir topik ini. 

    Jalankan perintah berikut untuk menjalankan `spark-submit` perintah pada wadah untuk mengirimkan aplikasi Spark baru: 

   ```
   $ docker run -it --rm \
       -v ~/.aws:/home
       /hadoop/.aws \
       -v $WORKSPACE_LOCATION:/home/hadoop/workspace/ \
       -e AWS_PROFILE=$PROFILE_NAME \
       --name glue5_spark_submit \
       public.ecr.aws/glue/aws-glue-libs:5 \
       spark-submit /home/hadoop/workspace/src/$SCRIPT_FILE_NAME
   ```

1. (Opsional) Konfigurasikan `spark-submit` agar sesuai dengan lingkungan Anda. Misalnya, Anda dapat meneruskan dependensi Anda dengan konfigurasi. `--jars` Untuk informasi lebih lanjut, lihat [Dynamically Loading Spark Properties](https://spark.apache.org/docs/latest/configuration.html) di dokumentasi Spark. 

### Cangkang REPL (Pyspark)
<a name="develop-local-docker-image-setup-run-repl-shell"></a>

 Anda dapat menjalankan REPL (`read-eval-print loops`) shell untuk pengembangan interaktif. Jalankan perintah berikut untuk menjalankan PySpark perintah pada wadah untuk memulai shell REPL: 

```
$ docker run -it --rm \
    -v ~/.aws:/home/hadoop/.aws \
    -e AWS_PROFILE=$PROFILE_NAME \
    --name glue5_pyspark \
    public.ecr.aws/glue/aws-glue-libs:5 \
    pyspark
```

 Anda akan melihat output berikut: 

```
Python 3.11.6 (main, Jan  9 2025, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 3.5.4-amzn-0
      /_/

Using Python version 3.11.6 (main, Jan  9 2025 00:00:00)
Spark context Web UI available at None
Spark context available as 'sc' (master = local[*], app id = local-1740643079929).
SparkSession available as 'spark'.
>>>
```

 Dengan shell REPL ini, Anda dapat membuat kode dan menguji secara interaktif. 

### Pytest
<a name="develop-local-docker-image-setup-run-pytest"></a>

 Untuk pengujian unit, Anda dapat menggunakan `pytest` skrip pekerjaan AWS Glue Spark. Jalankan perintah berikut untuk persiapan. 

```
$ WORKSPACE_LOCATION=/local_path_to_workspace
$ SCRIPT_FILE_NAME=sample.py
$ UNIT_TEST_FILE_NAME=test_sample.py
$ mkdir -p ${WORKSPACE_LOCATION}/tests
$ vim ${WORKSPACE_LOCATION}/tests/${UNIT_TEST_FILE_NAME}
```

 Jalankan perintah berikut untuk menjalankan `pytest` menggunakan`docker run`: 

```
$ docker run -i --rm \
    -v ~/.aws:/home/hadoop/.aws \
    -v $WORKSPACE_LOCATION:/home/hadoop/workspace/ \
    --workdir /home/hadoop/workspace \
    -e AWS_PROFILE=$PROFILE_NAME \
    --name glue5_pytest \
    public.ecr.aws/glue/aws-glue-libs:5 \
    -c "python3 -m pytest --disable-warnings"
```

 Setelah `pytest` selesai menjalankan pengujian unit, output Anda akan terlihat seperti ini: 

```
============================= test session starts ==============================
platform linux -- Python 3.11.6, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/hadoop/workspace
plugins: integration-mark-0.2.0
collected 1 item

tests/test_sample.py .                                                   [100%]

======================== 1 passed, 1 warning in 34.28s =========================
```

### Menyiapkan wadah untuk menggunakan Visual Studio Code
<a name="develop-local-docker-image-setup-visual-studio"></a>

 Untuk mengatur wadah dengan Visual Studio Code, selesaikan langkah-langkah berikut: 

1. Instal Kode Visual Studio.

1. Instal [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python).

1. Instal [Visual Studio Code Remote - Wadah](https://code.visualstudio.com/docs/remote/containers)

1. Buka folder ruang kerja di Visual Studio Code.

1. Tekan `Ctrl+Shift+P` (Windows/Linux) atau `Cmd+Shift+P` (Mac).

1. Ketik `Preferences: Open Workspace Settings (JSON)`.

1. Tekan Enter.

1. Tempel JSON berikut dan simpan.

   ```
   {
       "python.defaultInterpreterPath": "/usr/bin/python3.11",
       "python.analysis.extraPaths": [
           "/usr/lib/spark/python/lib/py4j-0.10.9.7-src.zip:/usr/lib/spark/python/:/usr/lib/spark/python/lib/",
       ]
   }
   ```

 Untuk mengatur wadah: 

1. Jalankan wadah Docker.

   ```
   $ docker run -it --rm \
       -v ~/.aws:/home/hadoop/.aws \
       -v $WORKSPACE_LOCATION:/home/hadoop/workspace/ \
       -e AWS_PROFILE=$PROFILE_NAME \
       --name glue5_pyspark \
       public.ecr.aws/glue/aws-glue-libs:5 \
       pyspark
   ```

1. Mulai Kode Visual Studio.

1.  Pilih **Remote Explorer** di menu sebelah kiri, dan pilih`amazon/aws-glue-libs:glue_libs_4.0.0_image_01`. 

1.  Klik kanan dan pilih **Lampirkan di Jendela Saat Ini**.   
![\[Saat klik kanan, jendela dengan opsi untuk Lampirkan di Jendela Saat Ini disajikan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/vs-code-other-containers.png)

1.  Jika dialog berikut muncul, pilih **Mengerti**.   
![\[Peringatan jendela dengan pesan “Melampirkan ke wadah dapat mengeksekusi kode arbitrer”.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/vs-code-warning-got-it.png)

1. Buka `/home/handoop/workspace/`.  
![\[Drop-down jendela dengan opsi 'ruang kerja' disorot.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/vs-code-open-workspace.png)

1.  Buat AWS Glue PySpark skrip dan pilih **Jalankan**. 

   Anda akan melihat keberhasilan menjalankan skrip.  
![\[Keberhasilan menjalankan skrip.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/vs-code-run-successful-script.png)

## Perubahan antara gambar AWS Glue 4.0 dan AWS Glue 5.0 Docker
<a name="develop-local-docker-glue4-glue5-changes"></a>

 Perubahan besar antara gambar Docker AWS Glue 4.0 dan AWS Glue 5.0: 
+  Di AWS Glue 5.0, ada gambar kontainer tunggal untuk pekerjaan batch dan streaming. Ini berbeda dari Glue 4.0, di mana ada satu gambar untuk batch dan satu lagi untuk streaming. 
+  Di AWS Glue 5.0, nama pengguna default wadah adalah`hadoop`. Di AWS Glue 4.0, nama pengguna default adalah`glue_user`. 
+  Di AWS Glue 5.0, beberapa perpustakaan tambahan termasuk JupyterLab dan Livy telah dihapus dari gambar. Anda dapat menginstalnya secara manual. 
+  Di AWS Glue 5.0, semua pustaka Iceberg, Hudi dan Delta dimuat sebelumnya secara default, dan variabel lingkungan tidak lagi diperlukan. `DATALAKE_FORMATS` Sebelum AWS Glue 4.0, variabel lingkungan variabel `DATALAKE_FORMATS` lingkungan digunakan untuk menentukan format tabel tertentu yang harus dimuat. 

 Daftar di atas khusus untuk gambar Docker. Untuk mempelajari lebih lanjut tentang pembaruan AWS Glue 5.0, lihat [Memperkenalkan AWS Glue 5.0 untuk Apache Spark](https://aws.amazon.com/blogs/big-data/introducing-aws-glue-5-0-for-apache-spark/) dan [Migrating AWS Glue for Spark jobs](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html) ke versi 5.0. AWS Glue 

## Pertimbangan-pertimbangan
<a name="develop-local-docker-considerations"></a>

 Perlu diingat bahwa fitur berikut tidak didukung saat menggunakan gambar AWS Glue kontainer untuk mengembangkan skrip pekerjaan secara lokal. 
+  [Bookmark Job](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html) 
+  AWS Glue Penulis parket ([Menggunakan format Parket di](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-parquet-home.html)) AWS Glue
+  [ FillMissingValues mengubah](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-fillmissingvalues.html) 
+  [FindMatches mengubah](https://docs.aws.amazon.com/glue/latest/dg/machine-learning.html#find-matches-transform) 
+  [Pembaca SIMD CSV vektor](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-csv-home.html#aws-glue-programming-etl-format-simd-csv-reader) 
+  Properti [ customJdbcDriverS3Path](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-jdbc) untuk memuat driver JDBC dari jalur Amazon S3 
+  [AWS Glue Kualitas Data](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html) 
+  [Deteksi Data Sensitif](https://docs.aws.amazon.com/glue/latest/dg/detect-PII.html) 
+  AWS Lake Formation penjual kredenal berbasis izin 

## Lampiran: Menambahkan driver JDBC dan pustaka Java
<a name="develop-local-docker-image-appendix"></a>

 Untuk menambahkan driver JDBC yang saat ini tidak tersedia di wadah, Anda dapat membuat direktori baru di bawah ruang kerja Anda dengan file JAR yang Anda butuhkan dan memasang direktori ke dalam perintah `/opt/spark/jars/` docker run. File JAR yang ditemukan `/opt/spark/jars/` di bawah wadah secara otomatis ditambahkan ke Spark Classpath dan akan tersedia untuk digunakan selama pekerjaan dijalankan. 

 Misalnya, gunakan perintah docker run berikut untuk menambahkan stoples driver JDBC ke shell REPL. PySpark 

```
docker run -it --rm \
    -v ~/.aws:/home/hadoop/.aws \
    -v $WORKSPACE_LOCATION:/home/hadoop/workspace/ \
    -v $WORKSPACE_LOCATION/jars/:/opt/spark/jars/ \
    --workdir /home/hadoop/workspace \
    -e AWS_PROFILE=$PROFILE_NAME \
    --name glue5_jdbc \
    public.ecr.aws/glue/aws-glue-libs:5 \
    pyspark
```

 Seperti yang disorot dalam **Pertimbangan**, opsi `customJdbcDriverS3Path` koneksi tidak dapat digunakan untuk mengimpor driver JDBC khusus dari Amazon S3 dalam gambar kontainer. AWS Glue 