Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyediakan file dan pustaka Python untuk pekerjaan Ray
Bagian ini memberikan informasi yang Anda butuhkan untuk menggunakan pustaka Python dengan AWS Glue pekerjaan Ray. Anda dapat menggunakan pustaka umum tertentu yang disertakan secara default di semua pekerjaan Ray. Anda juga dapat menyediakan pustaka Python Anda sendiri untuk pekerjaan Ray Anda.
Modul disediakan dengan pekerjaan Ray
Anda dapat melakukan alur kerja integrasi data dalam pekerjaan Ray dengan paket yang disediakan berikut. Paket-paket ini tersedia secara default di pekerjaan Ray.
Menyediakan file untuk pekerjaan Ray Anda
Anda dapat memberikan file ke pekerjaan Ray Anda dengan --working-dir
parameter. Berikan parameter ini dengan jalur ke file.zip yang dihosting di Amazon S3. Dalam file.zip, file Anda harus terkandung dalam satu direktori tingkat atas. Tidak ada file lain yang harus berada di tingkat atas.
File Anda akan didistribusikan ke setiap node Ray sebelum skrip Anda mulai berjalan. Pertimbangkan bagaimana hal ini dapat memengaruhi ruang disk yang tersedia untuk setiap node Ray. Ruang disk yang tersedia ditentukan oleh WorkerType set dalam konfigurasi pekerjaan. Jika Anda ingin memberikan data pekerjaan Anda dalam skala besar, mekanisme ini bukanlah solusi yang tepat. Untuk informasi selengkapnya tentang penyediaan data ke pekerjaan Anda, lihatMenghubungkan ke data dalam pekerjaan Ray.
File Anda akan dapat diakses seolah-olah direktori disediakan untuk Ray melalui working_dir
parameter. Misalnya, untuk membaca file bernama sample.txt
di direktori tingkat atas file.zip Anda, Anda dapat memanggil:
@ray.remote def do_work(): f = open("sample.txt", "r") print(f.read())
Untuk informasi selengkapnyaworking_dir
, lihat dokumentasi Ray
Modul Python tambahan untuk pekerjaan Ray
Modul tambahan dari PyPI
Pekerjaan Ray menggunakan Python Package Installer (pip3) untuk menginstal modul tambahan yang akan digunakan oleh skrip Ray. Anda dapat menggunakan --pip-install
parameter dengan daftar modul Python yang dipisahkan koma untuk menambahkan modul baru atau mengubah versi modul yang ada.
Misalnya, untuk memperbarui atau menambahkan scikit-learn
modul baru, gunakan pasangan kunci-nilai berikut:
"--pip-install", "scikit-learn==0.21.3"
Jika Anda memiliki modul khusus atau tambalan khusus, Anda dapat mendistribusikan pustaka Anda sendiri dari Amazon S3 dengan parameter. --s3-py-modules
Sebelum mengunggah distribusi Anda, mungkin perlu dikemas ulang dan dibangun kembali. Ikuti pedoman di dalamTermasuk kode Python dalam pekerjaan Ray.
Distribusi khusus dari Amazon S3
Distribusi khusus harus mematuhi pedoman pengemasan Ray untuk dependensi. Anda dapat mengetahui cara membangun distribusi ini di bagian berikut. Untuk informasi selengkapnya tentang cara Ray mengatur dependensi, lihat Environment Dependencies
Untuk menyertakan distribusi khusus setelah menilai kontennya, unggah yang dapat didistribusikan ke ember yang tersedia untuk peran IAM pekerjaan. Tentukan jalur Amazon S3 ke arsip zip Python dalam konfigurasi parameter Anda. Jika Anda menyediakan beberapa distributor, pisahkan dengan koma. Misalnya:
"--s3-py-modules",
"s3://
s3bucket
/pythonPackage
.zip"
Keterbatasan
Pekerjaan Ray tidak mendukung kompilasi kode asli di lingkungan kerja. Anda dapat dibatasi oleh ini jika dependensi Python Anda secara transitif bergantung pada kode asli yang dikompilasi. Pekerjaan Ray dapat menjalankan binari yang disediakan, tetapi mereka harus dikompilasi untuk Linux di ARM64. Ini berarti Anda mungkin dapat menggunakan isi aarch64
manylinux
roda. Anda dapat memberikan dependensi asli Anda dalam bentuk yang dikompilasi dengan mengemas ulang roda ke standar Ray. Biasanya, ini berarti menghapus dist-info
folder sehingga hanya ada satu folder di root di arsip.
Anda tidak dapat memutakhirkan versi ray
atau ray[data]
menggunakan parameter ini. Untuk menggunakan versi baru Ray, Anda perlu mengubah bidang runtime pada pekerjaan Anda, setelah kami merilis dukungan untuk itu. Untuk informasi selengkapnya tentang versi Ray yang didukung, lihatVersi AWS Glue.
Termasuk kode Python dalam pekerjaan Ray
Yayasan Perangkat Lunak Python menawarkan perilaku standar untuk mengemas file Python untuk digunakan di berbagai runtime. Ray memperkenalkan batasan pada standar pengemasan yang harus Anda waspadai. AWS Gluetidak menentukan standar pengemasan di luar yang ditentukan untuk Ray. Petunjuk berikut memberikan panduan standar pada kemasan paket Python sederhana.
Package file Anda dalam .zip
arsip. Direktori harus berada di root arsip. Seharusnya tidak ada file lain di tingkat root arsip, atau ini dapat menyebabkan perilaku yang tidak terduga. Direktori root adalah paket, dan namanya digunakan untuk merujuk ke kode Python Anda saat mengimpornya.
Jika Anda memberikan distribusi dalam formulir ini ke pekerjaan Ray--s3-py-modules
, Anda akan dapat mengimpor kode Python dari paket Anda dalam skrip Ray Anda.
Paket Anda dapat menyediakan satu modul Python dengan beberapa file Python, atau Anda dapat mengemas banyak modul. Saat mengemas ulang dependensi, seperti pustaka dari PyPI, periksa file tersembunyi dan direktori metadata di dalam paket tersebut.
Awas
Perilaku OS tertentu membuat sulit untuk mengikuti instruksi pengemasan ini dengan benar.
-
OSX dapat menambahkan file tersembunyi seperti
__MACOSX
ke file zip Anda di tingkat atas. -
Windows dapat menambahkan file Anda ke folder di dalam zip secara otomatis, secara tidak sengaja membuat folder bersarang.
Prosedur berikut mengasumsikan Anda berinteraksi dengan file Anda di Amazon Linux 2 atau OS serupa yang menyediakan distribusi Info-ZIP zip
dan utilitas. zipinfo
Kami merekomendasikan menggunakan alat ini untuk mencegah perilaku yang tidak terduga.
Untuk mengemas file Python untuk digunakan di Ray
-
Buat direktori sementara dengan nama paket Anda, lalu konfirmasikan direktori kerja Anda adalah direktori induknya. Anda dapat melakukan ini dengan perintah berikut:
cd
parent_directory
mkdirtemp_dir
-
Salin file Anda ke direktori sementara, lalu konfirmasikan struktur direktori Anda. Isi direktori ini akan langsung diakses sebagai modul Python Anda. Anda dapat melakukan ini dengan perintah berikut:
ls -AR
temp_dir
# my_file_1.py # my_file_2.py -
Kompres folder sementara Anda menggunakan zip. Anda dapat melakukan ini dengan perintah berikut:
zip -r
zip_file
.ziptemp_dir
-
Konfirmasikan file Anda dikemas dengan benar.
sekarang harus ditemukan di direktori kerja Anda. Anda dapat memeriksanya dengan perintah berikut:zip_file
.zipzipinfo -1
zip_file
.zip # temp_dir/ # temp_dir/my_file_1.py # temp_dir/my_file_2.py
Untuk mengemas ulang paket Python untuk digunakan di Ray.
-
Buat direktori sementara dengan nama paket Anda, lalu konfirmasikan direktori kerja Anda adalah direktori induknya. Anda dapat melakukan ini dengan perintah berikut:
cd
parent_directory
mkdirtemp_dir
-
Dekompresi paket Anda dan salin isinya ke direktori sementara Anda. Hapus file yang terkait dengan standar kemasan Anda sebelumnya, hanya menyisakan konten modul. Konfirmasikan struktur file Anda terlihat benar dengan perintah berikut:
ls -AR
temp_dir
# my_module # my_module/__init__.py # my_module/my_file_1.py # my_module/my_submodule/__init__.py # my_module/my_submodule/my_file_2.py # my_module/my_submodule/my_file_3.py -
Kompres folder sementara Anda menggunakan zip. Anda dapat melakukan ini dengan perintah berikut:
zip -r
zip_file
.ziptemp_dir
-
Konfirmasikan file Anda dikemas dengan benar.
sekarang harus ditemukan di direktori kerja Anda. Anda dapat memeriksanya dengan perintah berikut:zip_file
.zipzipinfo -1
zip_file
.zip # temp_dir/my_module/ # temp_dir/my_module/__init__.py # temp_dir/my_module/my_file_1.py # temp_dir/my_module/my_submodule/ # temp_dir/my_module/my_submodule/__init__.py # temp_dir/my_module/my_submodule/my_file_2.py # temp_dir/my_module/my_submodule/my_file_3.py