Jika fitur standar PyODPS tidak memenuhi kebutuhan bisnis kompleks Anda, Anda dapat menggunakan kembali kode Python yang sudah ada atau memanfaatkan library open source. DataWorks menyediakan dua metode untuk memperluas kemampuan pemrosesan data: memuat skrip kustom sebagai resource atau mengintegrasikan paket pihak ketiga yang andal dengan mengonfigurasi lingkungan runtime melalui custom image atau O&M Assistant. Topik ini menjelaskan cara memanggil skrip Python kustom dan menggunakan paket open source di node PyODPS DataWorks.
Kasus penggunaan
Pilih metode yang sesuai berdasarkan lingkungan dan kebutuhan Anda.
Scenario | Resource group type | Solution |
Depends on open source third-party packages | Serverless resource group | |
Exclusive resource group for scheduling | ||
Depends only on custom | Serverless resource group or exclusive resource group for scheduling |
Gambar berikut menunjukkan proses utama untuk setiap solusi.
Persiapan
Sebelum memulai, Anda harus memahami dua konsep utama berikut untuk menentukan metode konfigurasi yang akan digunakan.
Deskripsi konsep
Tipe node: PyODPS 2 vs. PyODPS 3
PyODPS 2: Berbasis lingkungan Python 2.7.
PyODPS 3: Berbasis lingkungan Python 3.7+.
Rekomendasi: Kami sangat menyarankan Anda menggunakan PyODPS 3 karena dukungan resmi untuk Python 2 telah dihentikan. Topik ini menggunakan PyODPS 3 sebagai contoh utama.
Tipe kelompok sumber daya: Serverless resource groups vs. exclusive resource groups for scheduling
Serverless resource group: Direkomendasikan. Jenis kelompok sumber daya ini elastis dan bebas perawatan. Anda dapat menggunakan custom images untuk mengelola dependensi pihak ketiga. Solusi ini andal dan fleksibel.
Exclusive resource group for scheduling: Solusi lama. Tidak direkomendasikan. Anda harus membeli dan memelihara server ECS terlebih dahulu. Sumber daya tidak dapat diskalakan secara elastis. Menginstal dependensi menggunakan O&M Assistant memiliki banyak batasan dan berpotensi mencemari lingkungan.
Menentukan tipe kelompok sumber daya
Di Konsol DataWorks, buka halaman Resource Group di panel Workspace Details untuk melihat tipe kelompok sumber daya yang terhubung ke ruang kerja Anda.
Jika tipenya adalah General-purpose Type, Anda menggunakan serverless resource group.
Jika tipenya adalah Data Scheduling, Anda menggunakan exclusive resource group for scheduling.
Instal paket open source menggunakan custom image
Metode ini berlaku untuk serverless resource groups.
Bagian ini memandu Anda melalui kasus lengkap dari awal hingga akhir. Anda akan membuat lingkungan kustom yang berisi paket pendulum. Kemudian, Anda akan memanggilnya di node PyODPS 3 untuk mendapatkan dan memformat waktu saat ini dalam zona waktu tertentu.
Langkah 1: Buat custom image yang berisi pendulum
Custom image digunakan untuk menyiapkan lingkungan runtime untuk serverless resource groups.
Masuk ke Konsol DataWorks. Di panel navigasi sebelah kiri, klik Image Management.
Klik tab Custom Images.
Di pojok kiri atas, klik Create Image. Pada halaman yang muncul, konfigurasikan parameter utama berikut.
Parameter
Description
Image Name
Nama custom image. Misalnya,
pyodps3_with_pendulum.Reference Type
Pilih DataWorks Official Image.
Image Name/ID
Dari daftar drop-down, pilih image resmi DataWorks dataworks_pyodps_task_pod.
Supported Task Types
Pilih tipe task PyODPS 3.
Installation Package
Pilih Python3, lalu pilih paket pendulum dari daftar drop-down.
Untuk menginstal paket open source non-bawaan, Anda dapat menginstalnya secara manual dalam mode Script. Untuk informasi lebih lanjut tentang metode konfigurasi, lihat Create custom image parameters.
PentingJika Anda menginstal paket open source dari Internet, VPC yang terhubung ke serverless resource group harus have public network access enabled.
Klik OK untuk membuat custom image.
Di halaman Custom Images, uji lalu publikasikan image target. Anda hanya dapat memublikasikan image setelah lulus pengujian.
Di kolom Actions image target, klik untuk mengaitkan custom image ke ruang kerja.

Langkah 2: Buat dan konfigurasikan node PyODPS 3
Di panel navigasi sebelah kiri, klik . Dari daftar drop-down, pilih workspace target dan klik Go to Data Development.
Di bawah business flow yang sudah ada, buat node PyODPS 3. Misalnya, Anda dapat memberi nama node tersebut
pyodps3_pendulum_test.Di editor kode untuk node
pyodps_pendulum_test, masukkan kode Python 3 berikut:# Karena pendulum telah diinstal di custom image, Anda dapat langsung mengimpornya. Sintaksis Python 3 import pendulum print("Start testing the third-party package pendulum...") try: # Gunakan pendulum untuk mendapatkan waktu saat ini di zona waktu "Asia/Shanghai". shanghai_time = pendulum.now('Asia/Shanghai') # Cetak waktu yang diformat dan informasi zona waktu. print(f"Successfully imported the 'pendulum' package.") print(f"The current time in Shanghai is: {shanghai_time.to_datetime_string()}") print(f"The corresponding time zone is: {shanghai_time.timezone_name}") print("\nTest passed! The PyODPS node successfully called the third-party package.") except Exception as e: print(f"Test failed. An error occurred: {e}")
Langkah 3: Uji dan verifikasi hasilnya
Di bilah alat, klik ikon
untuk menjalankan kode. Di kotak dialog Parameters, pilih image pyodps3_with_pendulumyang telah Anda buat.PentingJika Anda tidak menemukan image target, pastikan image tersebut telah dikaitkan ke ruang kerja saat ini. Untuk informasi lebih lanjut, lihat Langkah 6 di Langkah 1.
Lihat log eksekusi di bagian bawah halaman. Output berikut menunjukkan bahwa paket
pendulumberhasil dipanggil.Start testing the third-party package pendulum... Successfully imported the 'pendulum' package. The current time in Shanghai is: 2025-09-27 15:45:00 The corresponding time zone is: Asia/Shanghai Test passed! The PyODPS node successfully called the third-party package.
Langkah 4: Publikasikan node PyODPS 3
Setelah pengujian selesai, buka di sisi kanan editor node. Pilih serverless resource group yang telah disiapkan dan ubah image menjadi image kustom pyodps3_with_pendulum. Lalu, publikasikan node ke Operation Center.
Instal paket open source menggunakan O&M Assistant
Metode ini ditujukan untuk exclusive resource groups for scheduling, yang tidak lagi direkomendasikan. Kami menyarankan Anda migrasi ke serverless resource groups, yang lebih andal dan fleksibel.
Masuk ke daftar workspace DataWorks. Di bilah navigasi atas, alihkan ke wilayah yang benar. Temukan workspace target dan klik Details di kolom Actions untuk membuka halaman produk workspace.
Di panel navigasi sebelah kiri, klik Resource Group. Temukan exclusive resource group for scheduling yang terkait dan, di kolom Actions, klik .
Di halaman O&M Assistant, klik Create Command di pojok kiri atas.
Masukkan perintah yang sesuai berdasarkan versi Python Anda.
Python 3 (PyODPS 3): Biarkan opsi default lainnya. Dari daftar drop-down, pilih paket instalasi pendulum di bawah tipe paket Python3.
Python 2 (PyODPS 2): Pilih mode Manual Input dan masukkan isi perintah berikut.
pip install --upgrade pip pip install "pendulum<2.0"
Di halaman O&M Assistant, klik Run Command di kolom Operation. Setelah perintah berhasil dieksekusi, Anda dapat langsung menggunakan
import pendulumdi node PyODPS yang sesuai.
Referensi resource Python kustom
Jika Anda hanya ingin memanggil fungsi dari file .py lain yang Anda tulis, lakukan langkah-langkah berikut:
Buat resource Python:
Di halaman Data Development, klik kanan business flow target dan pilih .
Di kotak dialog Create Resource, masukkan Name untuk resource tersebut (misalnya,
my_utils.py) dan klik Create.Masukkan kode berikut di resource Python.
# my_utils.py Sintaksis Python 3 def say_hello(name): print(f"Hello, {name}! This is from my_utils module.")Save dan submit resource tersebut.
Buat node PyODPS 3 dan referensikan resource tersebut:
Di business flow target, klik kanan MaxCompute, pilih , lalu buat node tersebut.
Di node tersebut, referensikan resource menggunakan
##@resource_reference{"my_utils.py"}. Kodenya sebagai berikut:##@resource_reference{"my_utils.py"} import sys import os # Tambahkan direktori tempat resource berada ke jalur pencarian interpreter Python. sys.path.append(os.path.dirname(os.path.abspath('my_utils.py'))) # Sekarang Anda dapat mengimpor dan menggunakannya seperti modul biasa. import my_utils my_utils.say_hello("DataWorks")
Run node tersebut. Output "Hello, DataWorks! This is from my_utils module." akan muncul di log.
FAQ
Q: Saat saya menginstal paket secara manual menggunakan perintah, mengapa pengujian custom image tidak berlanjut dalam waktu lama?
A: Jika lingkungan runtime task bergantung pada paket pihak ketiga dari Internet, VPC yang terhubung ke serverless resource group harus memiliki akses jaringan publik yang diaktifkan. Untuk informasi lebih lanjut, lihat Enable public network access for a resource group.
Anda juga dapat mencoba beralih ke sumber paket Python yang berbeda, seperti https://mirrors.aliyun.com/pypi/simple/. Mirror Alibaba Cloud tidak memerlukan akses jaringan publik.
Q: Apa yang harus saya lakukan jika gagal mengimpor paket pihak ketiga?
Pastikan custom image telah berhasil dipublikasikan.
Pastikan tipe task (PyODPS 2 atau 3) yang didukung oleh image sesuai dengan tipe node yang Anda buat.
Pastikan custom image telah dipilih dengan benar di scheduling configuration node PyODPS.
Anda tidak dapat memilih public resource group.
Periksa apakah versi paket yang diinstal kompatibel dengan versi Python Anda. Misalnya,
pendulumversi 2.0 dan yang lebih baru tidak mendukung Python 2.
> Change Workspace
> O&M Assistant