Quando os recursos nativos do PyODPS não atendem a requisitos de negócios complexos, talvez seja necessário reutilizar código Python ou usar bibliotecas open-source. O DataWorks oferece duas soluções: carregar scripts personalizados por referência de recurso ou integrar pacotes de terceiros usando imagens personalizadas ou o O&M Assistant. Este tópico descreve como chamar scripts Python personalizados ou instalar e usar pacotes open-source de terceiros em nós PyODPS do DataWorks para estender as capacidades de processamento de dados.
Seleção rápida
Escolha uma abordagem com base no seu ambiente e nos seus requisitos.
|
Cenário |
Tipo de grupo de recursos |
Solução |
|
Uso de pacotes open-source de terceiros |
grupo de recursos serverless |
Instalar pacotes open-source usando uma imagem personalizada |
|
grupo de recursos exclusivo para agendamento |
||
|
Uso apenas de arquivos de script |
grupo de recursos serverless / grupo de recursos exclusivo para agendamento |
A figura a seguir apresenta os principais fluxos de trabalho de cada solução.
Pré-requisitos
Antes de começar, entenda os dois conceitos-chave a seguir para escolher o método de configuração correto.
Conceitos-chave
-
Tipo de nó: PyODPS 2 vs. PyODPS 3
PyODPS 2: Baseado em um ambiente Python 2.7.
PyODPS 3: Baseado em um ambiente Python 3.7+.
Recomendação: Recomendamos fortemente o uso do PyODPS 3, pois o suporte oficial ao Python 2 foi encerrado. Este tópico usa o PyODPS 3 como exemplo principal.
-
Tipo de grupo de recursos: grupo de recursos serverless vs. grupo de recursos exclusivo para agendamento
Grupo de recursos serverless (Recomendado): Este grupo de recursos é elástico e livre de manutenção. Ele permite usar imagens personalizadas para gerenciar pacotes de terceiros.
Grupo de recursos exclusivo para agendamento (Não recomendado): Esta é uma solução legada. É necessário adquirir e manter servidores ECS, e os recursos não escalam elasticamente. O uso do O&M Assistant para instalar dependências tem diversas limitações e pode corromper o ambiente.
Identificar o tipo de grupo de recursos
No console do DataWorks, acesse a página Workspace Details do seu workspace. Na página Resource Group, verifique o tipo de grupo de recursos associado ao workspace.
Se o tipo for General-purpose, você usa um grupo de recursos serverless.
Se o tipo for Data Scheduling, você usa um grupo de recursos exclusivo para agendamento.
Instalação de pacotes open-source com imagem personalizada
Este método aplica-se a grupos de recursos serverless.
Esta seção fornece um exemplo completo de criação de um ambiente personalizado que inclui o pacote pendulum. Em seguida, use um nó PyODPS 3 para chamar esse pacote e recuperar e formatar a hora atual de um fuso horário específico.
Etapa 1: Criar uma imagem personalizada contendo a biblioteca pendulum
Imagens personalizadas definem o ambiente de execução de um grupo de recursos serverless.
Faça login no console do DataWorks e clique em Image Management no painel de navegação à esquerda.
Acesse a aba Custom Image.
-
Clique em Create Image no canto superior esquerdo. Na página Create, configure os seguintes parâmetros principais:
Parâmetro
Descrição
Image Name
Insira um nome para a imagem personalizada, por exemplo,
pyodps3_with_pendulum.Reference Type
Selecione DataWorks Official Image.
Image Name/ID
Na lista suspensa, selecione a imagem oficial do DataWorks dataworks_pyodps_task_pod.
Supported Task Types
Selecione o tipo de tarefa PyODPS 3.
Installation Package
Selecione Python3 e escolha o pacote pendulum fornecido pelo sistema na lista suspensa.
Para instalar um pacote open-source que não seja nativo, use o modo Script para instalação manual. Para mais informações sobre os métodos de configuração, consulte Parâmetros para criação de imagem personalizada.
ImportantePara instalar pacotes open-source da internet pública, a VPC associada ao grupo de recursos serverless deve ter acesso à rede pública.
Clique em OK para criar a imagem personalizada.
Na página Custom Images, teste e depois implante a imagem. A imagem precisa passar no teste antes da implantação.
-
Na coluna Operation da imagem desejada, clique em para associar um workspace proprietário à imagem personalizada.
Após a implantação bem-sucedida da imagem, o Deployment Status muda para Deployed, e um botão Disable aparece na coluna Actions. O menu suspenso Actions também inclui opções como Modify, Build, View Versions e Delete Image.
Etapa 2: Criar e configurar um nó PyODPS 3
Na barra de navegação à esquerda, clique em , selecione o workspace desejado na lista suspensa e clique em Go to DataStudio.
Em um business flow existente, crie um nó PyODPS 3 chamado
pyodps3_pendulum_test.-
No editor de código do nó
pyodps_pendulum_test, insira o seguinte código Python 3:# 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}")
Etapa 3: Testar e verificar o resultado
-
Clique no ícone
na barra de ferramentas para executar o código e, na caixa de diálogo Parameter, selecione a imagem pyodps3_with_pendulumcriada.ImportanteSe não encontrar a imagem desejada, certifique-se de que ela esteja associada ao workspace atual. Para mais informações, consulte a Etapa 6 em "Etapa 1: Criar uma imagem personalizada".
-
Visualize o log de execução na parte inferior da página. A saída a seguir indica que o pacote
pendulumfoi chamado com sucesso.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.
Etapa 4: Implantar o nó PyODPS 3
Após concluir o teste, acesse no painel à direita. Selecione seu grupo de recursos serverless e defina a imagem como a imagem personalizada pyodps3_with_pendulum criada. Em seguida, implante o nó no Operation Center.
Instalação de pacotes open-source com o O&M Assistant
Este método aplica-se a grupos de recursos exclusivos para agendamento, que são uma solução legada e não recomendada. Recomendamos a migração para grupos de recursos serverless, mais poderosos e flexíveis.
Faça login na lista de workspaces do DataWorks, alterne a região no topo da página e clique em Details na coluna Operation do workspace desejado para acessar a página de detalhes do workspace.
Na barra de navegação à esquerda, clique em Resource Group, localize o grupo de recursos exclusivo para agendamento associado e, na coluna Actions, clique em .
Na página O&M Assistant, clique em Create Command no canto superior esquerdo.
-
Insira o comando correspondente à sua versão do Python:
Python 3 (PyODPS 3): Mantenha as opções padrão. Na lista suspensa do tipo de pacote Python3, selecione o pacote de instalação pendulum.
-
Python 2 (PyODPS 2): Selecione o modo Manual Input e insira o conteúdo do comando.
pip install --upgrade pip pip install "pendulum<2.0"
Na página O&M Assistant, clique em Run Command na coluna Actions. Após a execução bem-sucedida do comando, use diretamente
import pendulumno nó PyODPS correspondente.
Referência a um recurso Python personalizado
Se precisar apenas chamar uma função de outro arquivo .py, siga estas etapas:
-
Criar um recurso Python
Na página Data Development, clique com o botão direito no business flow desejado e escolha .
Na caixa de diálogo Create Resource, insira um Name para o recurso, por exemplo,
my_utils.py, e clique em Create.-
Insira o seguinte código no editor de recurso Python.
# my_utils.py (Python 3 syntax) def say_hello(name): print(f"Hello, {name}! This is from the my_utils module.") Salve e envie o recurso.
-
Criar um nó e referenciar um recurso
No business flow desejado, clique com o botão direito em MaxCompute, selecione e siga as instruções na tela para criar o nó.
-
No nó, referencie o recurso usando a diretiva
##@resource_reference{"my_utils.py"}. O código completo é o seguinte:##@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")
Execute o nó. A saída "Hello, DataWorks! This is from the my_utils module." aparecerá no log.
Perguntas frequentes
-
P: Ao instalar manualmente um pacote via comando, por que o teste da imagem personalizada não progride por muito tempo?
Se o ambiente de execução da tarefa depender de um pacote de terceiros da internet pública, a VPC associada ao grupo de recursos serverless deve ter acesso à rede pública. Para mais informações, consulte Habilitar acesso à rede pública para um grupo de recursos.
Tente alternar para uma fonte de pacotes Python diferente, como https://mirrors.aliyun.com/pypi/simple/. Os espelhos da Alibaba Cloud não exigem acesso à rede pública.
-
P: O que fazer se a importação de um pacote de terceiros falhar?
Certifique-se de que a imagem personalizada foi implantada com sucesso.
Verifique se o tipo de tarefa suportado pela imagem (PyODPS 2 ou PyODPS 3) corresponde ao tipo do seu nó.
-
Confirme se a imagem personalizada correta está selecionada nas Properties do nó.
Não é possível selecionar um grupo de recursos público.
Verifique se a versão do pacote instalado é compatível com sua versão do Python. Por exemplo, o
pendulum2.0 e versões posteriores não suportam Python 2.
> Modify Owning Workspace
> O&M Assistant