View a markdown version of this page

Mengonfigurasi properti pekerjaan untuk pekerjaan shell Python di AWS Glue - AWS Lem

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

Mengonfigurasi properti pekerjaan untuk pekerjaan shell Python di AWS Glue

Anda dapat menggunakan tugas shell Python untuk menjalankan skrip Python sebagai shell di AWS Glue. Dengan tugas shell Python, Anda dapat menjalankan skrip yang kompatibel dengan Python 3.6 atau Python 3.9.

catatan

Dukungan untuk Pyshell v3.6 akan berakhir pada 1 Maret 2026. Untuk memigrasikan beban kerja Anda, lihat Migrasi dari pekerjaan shell AWS Glue Python. Jika Anda ingin melanjutkan dengan Python shell v3.9 lihatMigrasi dari Python shell 3.6 ke Python shell 3.9.

Batasan

Perhatikan batasan pekerjaan Python Shell berikut:

  • Anda tidak dapat menggunakan bookmark tugas dengan tugas shell Python tersebut.

  • Anda tidak dapat mengemas pustaka Python apa pun sebagai .egg file di Python 3.9+. Sebaliknya, gunakan .whl.

  • --extra-filesOpsi ini tidak dapat digunakan, karena keterbatasan pada salinan sementara data S3.

Lingkungan eksekusi

Pekerjaan shell Python berjalan di lingkungan eksekusi terkelola yang menyediakan akses ke penyimpanan lokal untuk pemrosesan data sementara:

Penyimpanan sementara lokal

Direk /tmp tori tersedia untuk penyimpanan sementara selama eksekusi pekerjaan. Direktori ini menyediakan sekitar 14 GiB ruang kosong yang dapat Anda gunakan untuk:

  • Pemrosesan file sementara

  • Penyimpanan data menengah

  • Caching kumpulan data kecil

catatan

Direk /tmp tori bersifat sementara dan dibersihkan setelah pekerjaan selesai. Jangan menggunakannya untuk penyimpanan data penting yang terus-menerus.

Mendefinisikan properti pekerjaan untuk pekerjaan shell Python

Bagian ini menjelaskan menentukan properti pekerjaan diAWS Glue Studio, atau menggunakan AWS CLI.

AWS Glue Studio

Ketika Anda menentukan pekerjaan shell Python Anda diAWS Glue Studio, Anda menyediakan beberapa properti berikut:

IAM Role

Tentukan peran AWS Identity and Access Management (IAM) yang digunakan untuk otorisasi ke sumber daya yang digunakan untuk menjalankan pekerjaan dan mengakses penyimpanan data. Untuk informasi selengkapnya tentang izin menjalankan tugas di AWS Glue, lihat Manajemen identitas dan akses untuk AWS Glue.

Tipe

Pilih Python shell untuk menjalankan skrip Python dengan perintah tugas bernama pythonshell.

Versi Python

Pilih versi Python. Defaultnya adalah Python 3.9. Jika Anda menentukan 3, pekerjaan dibuat menggunakan Python 3.9.

Muat pustaka analisis umum (Direkomendasikan)

Pilih opsi ini untuk menyertakan pustaka umum untuk Python 3.9 di shell Python.

Jika pustaka Anda bersifat kustom atau bertentangan dengan pustaka pra-instal, Anda dapat memilih untuk tidak menginstal pustaka umum. Namun, Anda dapat menginstal pustaka tambahan selain pustaka umum.

Ketika Anda memilih opsi ini, library-set opsi diatur keanalytics. Saat Anda membatalkan pilihan ini, library-set opsi disetel kenone.

Nama file skrip dan jalur skrip

Kode dalam Skrip mendefinisikan logika prosedural tugas Anda. Anda menyediakan nama skrip dan lokasi di Amazon Simple Storage Service (Amazon S3). Konfirmasi bahwa tidak ada file dengan nama yang sama sebagai direktori skrip pada path. Untuk mem-pelajari selengkapnya tentang menggunakan skrip, lihat AWS Glue panduan pemrograman.

Skrip

Kode dalam Skrip mendefinisikan logika prosedural tugas Anda. Anda dapat membuat kode skrip di Python 3.6 atau Python 3.9. Anda dapat mengedit skrip diAWS Glue Studio.

Unit pengolah data

Jumlah maksimum unit pengolahan data (DPU) AWS Glue yang dapat dialokasikan ketika tugas ini berjalan. DPU adalah ukuran relatif daya pemrosesan yang terdiri dari 4 vCPU kapasitas komputasi dan 16 GB memori. Untuk informasi selengkapnya, lihat harga AWS Glue.

Anda dapat mengatur nilai-nya ke 0,0625 atau 1. Default-nya adalah 0,0625. Dalam kedua kasus tersebut, disk lokal untuk instance akan menjadi 20GB.

CLI

Anda juga dapat membuat pekerjaan shell Python menggunakan AWS CLI, seperti pada contoh berikut.

aws glue create-job --name python-job-cli --role Glue_DefaultRole --command '{"Name" : "pythonshell", "PythonVersion": "3.9", "ScriptLocation" : "s3://amzn-s3-demo-bucket/scriptname.py"}' --max-capacity 0.0625
catatan

Anda tidak perlu menentukan versi AWS Glue karena parameter --glue-version tidak berlaku untuk pekerjaan AWS Glue shell. Versi apa pun yang ditentukan akan diabaikan.

Untuk menentukan versi Python, tambahkan PythonVersion tupel ke --command parameter, misalnya"PythonVersion":"3.9".

catatan

Python shell 3.6 mencapai akhir masa pakai pada 1 Juni 2026. Saat Anda membuat pekerjaan yang menentukan"PythonVersion":"3", pekerjaan dibuat menggunakan Python 3.9. Perbarui pekerjaan Anda yang ada untuk menentukan"PythonVersion":"3.9".

Untuk mengatur kapasitas maksimal yang digunakan oleh tugas shell Python, berikan parameter --max-capacity. Untuk tugas shell Python, parameter --allocated-capacity tidak dapat digunakan.

Pustaka yang didukung untuk pekerjaan shell Python

Di shell Python menggunakan Python 3.9, Anda dapat memilih pustaka yang diatur untuk menggunakan set pustaka pra-paket untuk kebutuhan Anda. Anda dapat menggunakan library-set opsi untuk memilih set perpustakaan. Nilai yang valid adalahanalytics, dannone.

Lingkungan untuk menjalankan tugas shell Python mendukung perpustakaan berikut:

Versi Python Python 3.6 Python 3.9
Set perpustakaan N/A analitik tidak ada
avro 1.1.0
awscli 116.242 1.23.5 1.23.5
awswrangler 2.15.1
botocore 1.12.232 1.24.21 1.23.5
boto3 1.9.203 1.21.21
pencarian elastis 8.2.0
berbohong 1.16.2 1.22.3
panda 0.24.2 1.4.2
psikop2 2.9.3
piathena 2.5.3
PyGreSQL 5.0.6
PyMySQL 1.0.2
pyodbc 4.0.32
pyorc 0.6.0
konektor pergeseran merah 2.0.907
permintaan 2.2.0 2.27.1
scikit-belajar 0.20.3 1.0.2
cerewet 1.2.1 1.8.0
SQLAkimia 1.4.36
s3fs 2022.3.0

Anda dapat menggunakan perpustakaan NumPy dalam sebuah tugas shell Python untuk komputasi ilmiah. Untuk informasi selengkapnya, lihat NumPy. Contoh berikut menunjukkan NumPy skrip yang dapat digunakan dalam pekerjaan shell Python. Skrip mencetak "Hello world" dan hasil dari beberapa perhitungan matematis.

import numpy as np print("Hello world") a = np.array([20,30,40,50]) print(a) b = np.arange( 4 ) print(b) c = a-b print(c) d = b**2 print(d)

Menyediakan pustaka Python Anda sendiri

Menggunakan PIP

Shell Python menggunakan Python 3.9 memungkinkan Anda menyediakan modul Python tambahan atau versi yang berbeda di tingkat pekerjaan. Anda dapat menggunakan --additional-python-modules dengan daftar modul Python yang dipisahkan koma untuk menambahkan modul baru atau mengubah versi dari modul yang ada. Anda tidak dapat menyediakan modul Python kustom yang dihosting di Amazon S3 dengan parameter ini saat menggunakan pekerjaan shell Python.

Misalnya untuk memperbarui atau menambahkan scikit-learn modul baru gunakan kunci dan nilai berikut:"--additional-python-modules", "scikit-learn==0.21.3".

AWS Glue menggunakan Python Package Installer (pip3) untuk menginstal modul tambahan. Anda dapat meneruskan opsi pip3 tambahan di dalam --additional-python-modules nilai. Misalnya, "scikit-learn==0.21.3 -i https://pypi.python.org/simple/". Setiap ketidakcocokan atau batasan dari pip3 berlaku.

catatan

Untuk menghindari ketidakcocokan di masa mendatang, kami sarankan Anda menggunakan pustaka yang dibuat untuk Python 3.9.

Menggunakan file Egg atau Whl

Anda mungkin sudah memiliki satu atau beberapa perpustakaan Python yang dikemas sebagai sebuah file .egg atau .whl. Jika demikian, Anda dapat menentukannya ke tugas Anda dengan menggunakan AWS Command Line Interface (AWS CLI) pada bendera "--extra-py-files", seperti dalam contoh berikut.

aws glue create-job --name python-redshift-test-cli --role role --command '{"Name" : "pythonshell", "ScriptLocation" : "s3://MyBucket/python/library/redshift_test.py"}' --connections Connections=connection-name --default-arguments '{"--extra-py-files" : ["s3://amzn-s3-demo-bucket/EGG-FILE", "s3://amzn-s3-demo-bucket/WHEEL-FILE"]}'

Jika Anda tidak benar-benar mengetahui cara membuat sebuah file .egg atau .whl dari perpustakaan Python, maka gunakan langkah-langkah berikut. Contoh ini berlaku di macOS, Linux, dan Windows Subsystem for Linux (WSL).

Untuk membuat sebuah file .egg atau file .whl Python
  1. Buat klaster Amazon Redshift di sebuah virtual private cloud (VPC), dan tambahkan beberapa data ke tabel.

  2. Buat AWS Glue koneksi untuk VPC-SecurityGroup-Subnet kombinasi yang Anda gunakan untuk membuat cluster. Menguji apakah koneksi berhasil.

  3. Buatlah sebuah direktori bernama redshift_example, dan buatlah file bernama setup.py. Tempel kode berikut ke setup.py.

    from setuptools import setup setup( name="redshift_module", version="0.1", packages=['redshift_module'] )
  4. Pada direktori redshift_example, buat redshift_module. Pada direktori redshift_module, buat file __init__.py dan file pygresql_redshift_common.py.

  5. Biarkan file __init__.py kosong. Di pygresql_redshift_common.py, tempel kode berikut. G port antidb_name,user,, dan password_for_user dengan detail khusus untuk cluster Amazon Redshift Anda. Ganti table_name dengan nama tabel di Amazon Redshift.

    import pg def get_connection(host): rs_conn_string = "host=%s port=%s dbname=%s user=%s password=%s" % ( host, port, db_name, user, password_for_user) rs_conn = pg.connect(dbname=rs_conn_string) rs_conn.query("set statement_timeout = 1200000") return rs_conn def query(con): statement = "Select * from table_name;" res = con.query(statement) return res
  6. Jika Anda belum sampai di langkah itu, ubah ke direktori redshift_example.

  7. Lakukan salah satu tindakan berikut:

    • Untuk membuat sebuah file .egg, jalankan perintah berikut.

      python setup.py bdist_egg
    • Untuk membuat sebuah file .whl, jalankan perintah berikut.

      python setup.py bdist_wheel
  8. Menginstal dependensi yang diperlukan untuk perintah sebelumnya.

  9. Perintah tersebut membuat file di direktori dist:

    • Jika Anda membuat sebuah file egg, namanya adalah redshift_module-0.1-py2.7.egg.

    • Jika Anda membuat sebuah file roda, namanya adalah redshift_module-0.1-py2.7-none-any.whl.

    Unggah file ini ke Amazon S3.

    Dalam contoh ini, path file yang diunggah adalah s3://amzn-s3-demo-bucket/EGG-FILE atau s3://amzn-s3-demo-bucket/WHEEL-FILE.

  10. Buat sebuah file Python untuk digunakan sebagai skrip untuk tugas AWS Glue, dan tambahkan kode berikut ke file tersebut.

    from redshift_module import pygresql_redshift_common as rs_common con1 = rs_common.get_connection(redshift_endpoint) res = rs_common.query(con1) print "Rows in the table cities are: " print res
  11. Unggah file sebelumnya ke Amazon S3. Dalam contoh ini, path file yang diunggah adalah s3://amzn-s3-demo-bucket/scriptname.py.

  12. Buat sebuah tugas shell Python menggunakan skrip ini. Pada konsol AWS Glue, pada halaman Properti Tugas, tentukan path ke file .egg/.whl pada kotak Path perpustakaan Python. Jika Anda memiliki beberapa file .egg/.whl dan file Python, berikan daftar dipisahkan koma dalam kotak ini.

    Saat memodifikasi atau mengganti nama .egg, nama file harus menggunakan nama default yang dihasilkan oleh perintah "python setup.py bdist_egg" atau harus mematuhi konvensi penamaan modul Python. Untuk informasi selengkapnya, lihat bagian Panduan Gaya untuk Kode Python.

    Menggunakan AWS CLI, buat pekerjaan dengan perintah, seperti pada contoh berikut.

    aws glue create-job --name python-redshift-test-cli --role Role --command '{"Name" : "pythonshell", "ScriptLocation" : "s3://amzn-s3-demo-bucket/scriptname.py"}' --connections Connections="connection-name" --default-arguments '{"--extra-py-files" : ["s3://amzn-s3-demo-bucket/EGG-FILE", "s3://amzn-s3-demo-bucket/WHEEL-FILE"]}'

    Saat pekerjaan berjalan, skrip mencetak baris yang dibuat dalam table_name tabel di cluster Amazon Redshift.

Gunakan AWS CloudFormation dengan pekerjaan shell Python di AWS Glue

Anda dapat menggunakan AWS CloudFormation dengan pekerjaan shell Python diAWS Glue. Berikut ini adalah contohnya:

AWSTemplateFormatVersion: 2010-09-09 Resources: Python39Job: Type: 'AWS::Glue::Job' Properties: Command: Name: pythonshell PythonVersion: '3.9' ScriptLocation: 's3://bucket/location' MaxRetries: 0 Name: python-39-job Role: RoleName

Grup Amazon CloudWatch Logs untuk keluaran pekerjaan shell Python adalah/aws-glue/python-jobs/output. Untuk kesalahan, lihat grup log /aws-glue/python-jobs/error.

Migrasi dari Python shell 3.6 ke Python shell 3.9

Untuk memigrasikan pekerjaan shell Python Anda ke AWS Glue versi terbaru:

  1. Di AWS Glue console (https://console.aws.amazon.com/glue/), pilih pekerjaan shell Python yang ada.

  2. Di tab Detail pekerjaan, atur versi Python ke Python 3.9 dan pilih S impan.

  3. Pastikan skrip pekerjaan Anda kompatibel dengan Python 3.9 dan berhasil berjalan.