Yerleşik PyODPS özellikleri karmaşık iş gereksinimlerinizi karşılamadığında Python kodunu yeniden kullanmanız veya açık kaynaklı kütüphanelerden yararlanmanız gerekebilir. DataWorks bu durumda iki çözüm sunar: Özel betikleri kaynak referansı aracılığıyla yükleme veya üçüncü taraf paketleri özel görüntüler ya da O&M Assistant kullanarak entegre etme. Bu konu, veri işleme yeteneklerinizi genişletmek için DataWorks PyODPS düğümlerinde özel Python betiklerinin nasıl çağrılacağını veya açık kaynaklı üçüncü taraf paketlerin nasıl kurulup kullanılacağını açıklar.
Hızlı seçim
Ortamınıza ve gereksinimlerinize göre bir yaklaşım seçin.
|
Senaryo |
Kaynak grubu türü |
Çözüm |
|
Açık kaynaklı üçüncü taraf paketleri kullanma |
serverless resource group |
|
|
exclusive resource group for scheduling |
||
|
Yalnızca özel |
serverless resource group / exclusive resource group for scheduling |
Aşağıdaki şekil her bir çözümün ana iş akışlarını özetler.
Ön koşullar
Başlamadan önce doğru yapılandırma yöntemini seçmek için aşağıdaki iki temel kavramı anlayın.
Temel kavramlar
-
Düğüm türü: PyODPS 2 ile PyODPS 3
PyODPS 2: Python 2.7 ortamına dayanır.
PyODPS 3: Python 3.7+ ortamına dayanır.
Öneri: Resmi Python 2 desteği sona erdiğinden PyODPS 3 kullanmanızı şiddetle öneririz. Bu konuda birincil örnek olarak PyODPS 3 kullanılmaktadır.
-
Kaynak grubu türü: serverless resource group ile exclusive resource group for scheduling
Serverless resource group (Önerilen): Bu kaynak grubu esnektir ve bakım gerektirmez. Üçüncü taraf paketleri yönetmek için özel görüntüler kullanmanıza olanak tanır.
Exclusive resource group for scheduling (Önerilmez): Bu eski bir çözümdür. ECS sunucularını satın almanız ve bakımlarını yapmanız gerekir; ayrıca kaynakları elastik olarak ölçeklendirilemez. Bağımlılıkları yüklemek için O&M Assistant kullanmanın birçok sınırlaması vardır ve ortamı bozabilir.
Kaynak grubu türünü belirleme
DataWorks konsolu içinde çalışma alanınızın Workspace Details sayfasına gidin. Resource Group sayfasında workspace ile ilişkili kaynak grubu türünü kontrol edin.
Tür General-purpose ise serverless resource group kullanıyorsunuz demektir.
Tür Data Scheduling ise exclusive resource group for scheduling kullanıyorsunuz demektir.
Özel görüntü kullanarak açık kaynaklı paketleri yükleyin
Bu yöntem serverless resource group'lar için geçerlidir.
Bu bölümde pendulum paketini içeren özel bir ortam oluşturmaya yönelik uçtan uca bir örnek sunulur. Daha sonra bu paketi belirli bir saat dilimi için geçerli saati almak ve biçimlendirmek amacıyla bir PyODPS 3 düğümünden çağırırsınız.
1. Adım: pendulum kütüphanesini içeren özel bir görüntü oluşturma
Özel görüntüler serverless resource group için çalışma zamanı ortamını tanımlar.
DataWorks konsoluna giriş yapın ve sol gezinme bölmesinde Image Management öğesine tıklayın.
Custom Image sekmesine gidin.
-
Sol üst köşede Create Image seçeneğine tıklayın. Oluşturma sayfasında aşağıdaki temel parametreleri yapılandırın:
Parametre
Açıklama
Image Name
Özel görüntü için bir ad girin, örneğin
pyodps3_with_pendulum.Reference Type
DataWorks Official Image seçeneğini belirleyin.
Image Name/ID
Açılan listeden resmi DataWorks görüntüsü olan dataworks_pyodps_task_pod öğesini seçin.
Supported Task Types
PyODPS 3 görev türünü seçin.
Installation Package
Python3 seçeneğini belirleyin ve ardından açılan listeden sistem tarafından sağlanan pendulum paketini seçin.
Yerleşik olmayan açık kaynaklı bir paketi yüklemek için manuel kurulum amacıyla Betik modunu kullanabilirsiniz. Yapılandırma yöntemleri hakkında daha fazla bilgi için bkz. Özel görüntü oluşturma parametreleri.
ÖnemliGenel internetten açık kaynaklı paketleri yüklemek için serverless resource group ile ilişkili VPC'nin genel ağ erişimine sahip olması gerekir.
Özel görüntüyü oluşturmak için OK seçeneğine tıklayın.
Custom Images sayfasında görüntüyü test edin ve ardından deploy edin. Bir görüntünün dağıtılabilmesi için testi başarıyla geçmesi gerekir.
-
Hedef görüntünün Operation sütununda seçeneklerine tıklayarak özel görüntüyle bir owning workspace ilişkilendirin.
Görüntü başarıyla dağıtıldıktan sonra Deployment Status durumu Deployed olarak değişir ve Actions sütununda bir Disable düğmesi görünür. Actions açılır menüsü ayrıca Modify, Build, View Versions ve Delete Image gibi seçenekler de içerir.
2. Adım: PyODPS 3 düğümü oluşturma ve yapılandırma
Sol gezinme çubuğunda seçeneklerine tıklayın, açılan listeden hedef workspace seçin ve Go to DataStudio seçeneğine tıklayın.
Mevcut bir business flow içinde
pyodps3_pendulum_testadlı bir PyODPS 3 düğümü oluşturun.-
pyodps_pendulum_testdüğümünün kod düzenleyicisinde aşağıdaki Python 3 kodunu girin:# The pendulum package is installed in the custom image, so you can import it directly. import pendulum print("Start testing the third-party package pendulum...") try: # Use pendulum to get the current time in the "Asia/Shanghai" time zone. shanghai_time = pendulum.now('Asia/Shanghai') # Print the formatted time and time zone information. 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}")
3. Adım: Sonucu test etme ve doğrulama
-
Araç çubuğundaki
simgesine tıklayarak kodu çalıştırın ve Parameter iletişim kutusunda oluşturduğunuz pyodps3_with_pendulumgörüntüsünü seçin.ÖnemliHedef görüntüyü bulamıyorsanız görüntünün mevcut workspace ile ilişkilendirildiğinden emin olun. Daha fazla bilgi için "1. Adım: Özel bir görüntü oluşturma" bölümündeki 6. adıma bakın.
-
Sayfanın alt kısmındaki run log çıktısını inceleyin. Aşağıdaki çıktı
pendulumpaketinin başarıyla çağrıldığını gösterir.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.
4. Adım: PyODPS 3 düğümünü dağıtma
Test tamamlandıktan sonra sağ bölmede yolunu izleyin. serverless resource group seçeneğini belirleyin ve görüntüyü oluşturduğunuz pyodps3_with_pendulum özel görüntüsüne ayarlayın. Ardından düğümü Operation Center'a dağıtabilirsiniz.
O&M Assistant kullanarak açık kaynaklı paketleri yükleyin
Bu yöntem artık önerilmeyen eski bir çözüm olan exclusive resource group for scheduling için geçerlidir. Daha güçlü ve esnek olduklarından serverless resource group'lara geçiş yapmanızı öneririz.
DataWorks workspace listesine gidin, sayfanın üst kısmından bölgeyi değiştirin ve ardından hedef workspace'in Operation sütunundaki Details seçeneğine tıklayarak workspace ayrıntıları sayfasına gidin.
Sol gezinme çubuğunda Resource Group seçeneğine tıklayın, ilişkili exclusive resource group for scheduling bulun ve Actions sütununda seçeneklerine tıklayın.
O&M Assistant sayfasında sol üst köşede Create Command seçeneğine tıklayın.
-
Python sürümünüzle eşleşen komutu girin:
Python 3 (PyODPS 3): Varsayılan seçenekleri koruyun. Python3 paket türü için açılan listeden pendulum yükleme paketini seçin.
-
Python 2 (PyODPS 2): Manual Input modunu seçin ve komut içeriğini girin.
pip install --upgrade pip pip install "pendulum<2.0"
O&M Assistant sayfasında Actions sütununda Run Command seçeneğine tıklayın. Komut başarıyla çalıştıktan sonra ilgili PyODPS düğümünde doğrudan
import pendulumkullanabilirsiniz.
Özel bir Python kaynağına başvurun
Yalnızca başka bir .py dosyasındaki bir işlevi çağırmanız gerekiyorsa aşağıdaki adımları izleyin:
-
Bir Python kaynağı oluşturun
Veri Geliştirme sayfasında hedef business flow üzerine sağ tıklayın ve seçeneklerini belirleyin.
Create Resource iletişim kutusunda kaynak için bir Name girin, örneğin
my_utils.pyve Create seçeneğine tıklayın.-
Python kaynağı düzenleyicisine aşağıdaki kodu girin.
# my_utils.py (Python 3 syntax) def say_hello(name): print(f"Hello, {name}! This is from the my_utils module.") Kaynağı kaydedin ve gönderin.
-
Bir düğüm oluşturun ve bir kaynağa başvurun
Hedef business flow içinde MaxCompute üzerine sağ tıklayın, seçeneklerini belirleyin ve ekrandaki talimatları izleyerek düğümü oluşturun.
-
Düğümde
##@resource_reference{"my_utils.py"}yönergesini kullanarak kaynağa başvurun. Tam kod şu şekildedir:##@resource_reference{"my_utils.py"} import sys import os # Add the resource's current directory to the Python interpreter's search path. sys.path.append(os.path.dirname(os.path.abspath('my_utils.py'))) # You can now import and use the resource like a regular module. import my_utils my_utils.say_hello("DataWorks")
Düğümü çalıştırın. Günlükte "Hello, DataWorks! This is from the my_utils module." çıktısı görünür.
SSS
-
S: Komut kullanarak manuel olarak bir paket yüklediğimde özel görüntü testi neden uzun süre ilerlemiyor?
Görevin çalışma zamanı ortamı genel internetten bir üçüncü taraf paketine bağımlıysa serverless resource group ile ilişkili VPC'nin genel ağ erişimine sahip olması gerekir. Daha fazla bilgi için bkz. Bir kaynak grubu için genel ağ erişimini etkinleştirme.
Alibaba Cloud PyPI yansısı gibi farklı bir Python paket kaynağına geçmeyi deneyin. Alibaba Cloud yansılarının genel ağ erişimine ihtiyacı yoktur.
-
S: Üçüncü taraf bir paketi içe aktarma başarısız olursa ne yapabilirim?
Özel görüntünün başarıyla dağıtıldığından emin olun.
Görüntü tarafından desteklenen görev türünün (PyODPS 2 veya PyODPS 3) düğümünüzün türüyle eşleştiğinden emin olun.
-
Düğümün Properties bölümünde doğru özel görüntünün seçildiğinden emin olun.
Genel bir kaynak grubu seçemezsiniz.
Yüklenen paket sürümünün Python sürümünüzle uyumlu olup olmadığını kontrol edin. Örneğin
pendulum2.0 ve sonraki sürümleri Python 2'yi desteklemez.
> Modify Owning Workspace
> O&M Assistant