Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Glue memungkinkan Anda menginstal modul dan pustaka Python tambahan untuk digunakan dengan Glue. AWS ETL
Topik
- Menginstal pustaka Python tambahan di AWS Glue 5.0 menggunakan requirements.txt
- Menginstal modul Python tambahan dengan pip di AWS Glue 2.0 atau yang lebih baru
- Termasuk file Python dengan fitur asli PySpark
- Skrip pemrograman yang menggunakan transformasi visual
- Modul Python sudah disediakan di Glue AWS
- Pustaka ritsleting untuk dimasukkan
- Memuat pustaka Python di notebook Glue Studio AWS
- Memuat pustaka Python di titik akhir pengembangan
- Menggunakan pustaka Python dalam pekerjaan atau JobRun
Menginstal pustaka Python tambahan di AWS Glue 5.0 menggunakan requirements.txt
Di AWS Glue 5.0, Anda dapat memberikan standar defacto untuk requirements.txt
mengelola dependensi pustaka Python. Untuk melakukan itu, berikan dua parameter pekerjaan berikut:
Kunci:
--python-modules-installer-option
Nilai:
-r
Kunci:
--additional-python-modules
Nilai:
s3://path_to_requirements.txt
AWS Glue 5.0 node awalnya memuat pustaka python yang ditentukan dalam. requirements.txt
Berikut contoh requirements.txt:
awswrangler==3.9.1
elasticsearch==8.15.1
PyAthena==3.9.0
PyMySQL==1.1.1
PyYAML==6.0.2
pyodbc==5.2.0
pyorc==0.9.0
redshift-connector==2.1.3
scipy==1.14.1
scikit-learn==1.5.2
SQLAlchemy==2.0.36
Menginstal modul Python tambahan dengan pip di AWS Glue 2.0 atau yang lebih baru
AWS Glue menggunakan Python Package Installer (pip3) untuk menginstal modul tambahan yang akan digunakan oleh Glue. AWS ETL Anda dapat menggunakan --additional-python-modules
parameter dengan daftar modul Python yang dipisahkan koma untuk menambahkan modul baru atau mengubah versi modul yang ada. Anda dapat menginstal distribusi kustom pustaka dengan mengunggah distribusi ke Amazon S3, lalu menyertakan jalur ke objek Amazon S3 dalam daftar modul Anda.
Anda dapat meneruskan opsi tambahan ke pip3 dengan parameter. --python-modules-installer-option
Misalnya, Anda dapat meneruskan "--upgrade"
untuk memutakhirkan paket yang ditentukan oleh"--additional-python-modules"
. Untuk contoh lainnya, lihat Membangun modul Python dari roda untuk ETL beban kerja Spark menggunakan AWS
Jika dependensi Python Anda secara transitif bergantung pada kode asli yang dikompilasi, Anda dapat menghadapi batasan berikut: AWS Glue tidak mendukung kompilasi kode asli di lingkungan pekerjaan. Namun, pekerjaan AWS Glue berjalan dalam lingkungan Amazon Linux 2. Anda mungkin dapat memberikan dependensi asli Anda dalam bentuk yang dikompilasi melalui Wheel yang dapat didistribusikan.
Misalnya untuk memperbarui atau menambahkan modul scikit-learn
baru menggunakan nilai/kunci berikut: "--additional-python-modules", "scikit-learn==0.21.3"
.
Selain itu, dalam opsi --additional-python-modules
Anda dapat menentukan path Amazon S3 ke modul roda Python. Sebagai contoh:
--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3
Anda menentukan --additional-python-modules
dalam bidang parameter Job dari konsol AWS Glue atau dengan mengubah argumen pekerjaan di AWS SDK. Untuk informasi selengkapnya tentang pengaturan parameter pekerjaan, lihatMenggunakan parameter pekerjaan dalam pekerjaan AWS Glue.
Termasuk file Python dengan fitur asli PySpark
AWS Glue menggunakan PySpark untuk menyertakan file Python dalam pekerjaan AWS ETL Glue. Anda akan ingin menggunakan --additional-python-modules
untuk mengelola dependensi Anda bila tersedia. Anda dapat menggunakan parameter --extra-py-files
pekerjaan untuk menyertakan file Python. Dependensi harus di-host di Amazon S3 dan nilai argumen harus berupa daftar jalur Amazon S3 yang dibatasi koma tanpa spasi. Fungsionalitas ini berperilaku seperti manajemen ketergantungan Python yang akan Anda gunakan dengan Spark. Untuk informasi selengkapnya tentang manajemen ketergantungan Python di Spark, lihat halaman Menggunakan Fitur PySpark Asli--extra-py-files
berguna dalam kasus di mana kode tambahan Anda tidak dikemas, atau saat Anda memigrasikan program Spark dengan rantai alat yang ada untuk mengelola dependensi. Agar alat ketergantungan Anda dapat dipertahankan, Anda harus menggabungkan dependensi Anda sebelum mengirimkan.
Skrip pemrograman yang menggunakan transformasi visual
Saat Anda membuat pekerjaan AWS Glue menggunakan antarmuka visual AWS Glue Studio, Anda dapat mengubah data Anda dengan node transformasi data terkelola dan transformasi visual khusus. Untuk informasi selengkapnya tentang node transformasi data terkelola, lihatTransformasi data dengan transformasi AWS Glue terkelola. Untuk informasi selengkapnya tentang transformasi visual kustom, lihat Mengubah data dengan transformasi visual kustom . Skrip yang menggunakan transformasi visual hanya dapat dihasilkan ketika ketika pekerjaan Anda Bahasa diatur untuk menggunakan Python.
Saat membuat pekerjaan AWS Glue menggunakan transformasi visual, AWS Glue Studio akan menyertakan transformasi ini di lingkungan runtime menggunakan --extra-py-files
parameter dalam konfigurasi pekerjaan. Untuk informasi selengkapnya tentang parameter pekerjaan, lihatMenggunakan parameter pekerjaan dalam pekerjaan AWS Glue. Saat membuat perubahan pada skrip atau lingkungan runtime yang dihasilkan, Anda harus mempertahankan konfigurasi pekerjaan ini agar skrip Anda berhasil berjalan.
Modul Python sudah disediakan di Glue AWS
Untuk mengubah versi modul yang disediakan ini, berikan versi baru dengan parameter --additional-python-modules
pekerjaan.
AWS Glue versi 5.0 menyertakan modul Python berikut di luar kotak:
aiobotocore==2.13.1
aiohappyeyeballs==2.3.5
aiohttp = 3.10.1
aioitertools==0.11.0
aiosignal== 1.3.1
appdirs==1.4.4
batas waktu asinkron== 4.0.3
attrs==24.2.0
awscrt=0.19.19
boto3 = 1.34.131
botocore==1.34.131
sertifikasi = 2024.7.4
CFFI = 1.14.5
charset-normalizer = 3.3.2
colorama==0.4.4
kontur ==1.2.1
kriptografi==36.0.1
pengendara sepeda = 0.12.1
distlib==0.3.1
distro==1.5.0
dokumen==0.16
Filelock = 3.0.12
alat font==4.53.1
daftar beku==1.4.1
fsspec==2024.6.1
gpg = 1.15.1
idna==2.10
importlib_resources==6.4.0
jmespath=0.10.0
kaleido==0.2.1
kiwisolver==1.4.5
libcomps==0.1.20
matplotlib==3.9.0
multidikt = 6.0.5
numpy = 1.26.4
pengepakan==24.1
panda ==2.2.2
bantal==10.4.0
pip=21,3.1
pip=22,3.1
plot== 5.23.0
lapis = 3.11
prompt-toolkit = 3.0.24
pyarrow = 17.0.0
pycparser = 2.20
Kerdil ==2.7.4
pyparsing = 3.1.2
PySocks==1.7.1
python-dateutil==2.9.0.post0
pytz==2024.1
permintaan==2.32.2
rpm=4.16.1.3
ruamel.yaml==0.16.6
ruamel.yaml.clib==0.1.2
s3fs==2024.6.1
s3transfer = 0.10.2
pelautan==0.13.2
setuptool=59.6.0
enam==1.16.0
keuletan==9.0.0
typing_extensions==4.12.2
tzdata ==2024.1
urllib3==1.25.10
virtualenv = 20.4.0
wcwidth==0.2.5
bungkus=1.16.0
yarl=1.9.4
ritsleting = 3.19.2
Pustaka ritsleting untuk dimasukkan
Kecuali sebuah perpustakaan terkandung dalam satu file .py
, ia harus dikemas dalam sebuah arsip .zip
. Direktori paket harus berada pada akar dari arsip, dan harus berisi file __init__.py
untuk paket. Python kemudian akan dapat mengimpor paket tersebut dengan cara normal.
Jika perpustakaan anda hanya terdiri dari sebuah modul Python tunggal dalam satu file .py
, Anda tidak perlu menempatkannya dalam sebuah file .zip
.
Memuat pustaka Python di notebook Glue Studio AWS
Untuk menentukan pustaka Python di notebook AWS Glue Studio, lihat Menginstal modul Python tambahan.
Memuat pustaka Python di titik akhir pengembangan
Jika Anda menggunakan kumpulan pustaka yang berbeda untuk ETL skrip yang berbeda, Anda dapat menyiapkan titik akhir pengembangan terpisah untuk setiap set, atau Anda dapat menimpa .zip
file pustaka yang dimuat titik akhir pengembangan Anda setiap kali Anda beralih skrip.
Anda dapat menggunakan konsol untuk menentukan satu atau beberapa perpustakaan file .zip untuk sebuah titik akhir pengembangan ketika Anda membuatnya. Setelah menetapkan nama dan IAM peran, pilih Pustaka Skrip dan parameter pekerjaan (opsional) dan masukkan jalur Amazon S3 lengkap ke file .zip
pustaka Anda di kotak jalur pustaka Python. Sebagai contoh:
s3://bucket
/prefix/
site-packages.zip
Jika Anda mau, Anda dapat menentukan beberapa path lengkap ke file, memisahkannya dengan koma tetapi tanpa spasi, seperti ini:
s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
Jika Anda kemudian memperbarui file .zip
, Anda dapat menggunakan konsol untuk mengimpornya kembali ke titik akhir pengembangan Anda. Arahkan ke titik akhir pengembang yang dimaksud, centang kotak di sampingnya, dan pilih Perbarui ETL pustaka dari menu Tindakan.
Dengan cara yang sama, Anda dapat menentukan file perpustakaan menggunakan AWS GlueAPIs. Ketika Anda membuat sebuah titik akhir pengembangan dengan memanggil CreateDevEndpoint tindakan (Python: create_dev_endpoint), Anda dapat menentukan satu atau beberapa path lengkap ke perpustakaan di parameter ExtraPythonLibsS3Path
, dalam panggilan yang terlihat seperti ini:
dep = glue.create_dev_endpoint(
EndpointName="testDevEndpoint
",
RoleArn="arn:aws:iam::123456789012
",
SecurityGroupIds="sg-7f5ad1ff
",
SubnetId="subnet-c12fdba4
",
PublicKey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtp04H/y...
",
NumberOfNodes=3
,
ExtraPythonLibsS3Path="s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
")
Ketika Anda memperbarui titik akhir pengembangan, Anda juga dapat memperbarui perpustakaan yang dimuatnya menggunakan objek DevEndpointCustomLibraries dan pengaturan parameter UpdateEtlLibraries
untuk True
ketika memanggil UpdateDevEndpoint (update_dev_endpoint).
Menggunakan pustaka Python dalam pekerjaan atau JobRun
Ketika Anda membuat sebuah Tugas baru pada konsol, Anda dapat menentukan satu atau beberapa perperpustakaanan file .zip dengan memilih Perpustakaan skrip dan parameter tugas (opsional) dan memasukkan path perpustakaan Amazon S3 lengkap dengan cara yang sama saat membuat titik akhir pengembangan:
s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
Jika Anda memanggil CreateJob (create_job), Anda dapat menentukan satu atau beberapa path lengkap ke perpustakaan default menggunakan parameter --extra-py-files
default, seperti ini:
job = glue.create_job(Name='sampleJob
',
Role='Glue_DefaultRole
',
Command={'Name': 'glueetl',
'ScriptLocation': 's3://my_script_bucket/scripts/my_etl_script.py
'},
DefaultArguments={'--extra-py-files': 's3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
'})
Kemudian ketika Anda memulai JobRun, Anda dapat mengganti pengaturan pustaka default dengan yang berbeda:
runId = glue.start_job_run(JobName='sampleJob
',
Arguments={'--extra-py-files': 's3://bucket/prefix/lib_B.zip
'})