Execute o PyODPS como um nó em plataformas de desenvolvimento de dados, como o DataWorks. Essas plataformas gerenciam o runtime e o agendamento do PyODPS, o que elimina a necessidade de criar manualmente um objeto de entrada do MaxCompute. A API PyODPS DataFrame permite processar dados no estilo pandas. Este tópico usa o DataWorks para demonstrar como começar a usar o PyODPS em seus projetos.
Pré-requisitos
Você ativou o MaxCompute.
Você criou um projeto do MaxCompute.
Você criou um workspace do DataWorks e vinculou recursos de computação a ele.
Procedimento
-
Crie um nó PyODPS.
Este tópico utiliza um nó PyODPS do DataWorks. Para mais detalhes, consulte Develop a PyODPS 3 task.
Este tópico usa um nó PyODPS 3 como exemplo. A versão subjacente do Python para nós PyODPS 3 é a 3.7.
Um nó PyODPS processa no máximo 50 MB de dados locais e usa até 1 GB de memória durante a execução. O sistema encerra tarefas que excedam esses limites. Portanto, evite escrever código Python que processe grandes volumes de dados em uma tarefa PyODPS.
Escrever e depurar código no DataWorks pode ser menos eficiente. Para melhorar a produtividade, recomendamos desenvolver seu código localmente no IntelliJ IDEA.
-
Crie um fluxo de trabalho.
Acesse a página Data Studio, clique com o botão direito em Business Flow e selecione Create Workflow.
-
Crie um nó PyODPS.
Clique com o botão direito no novo fluxo de trabalho, escolha , insira um nome para o nó e clique em Submit.
-
Edite o nó PyODPS.
-
Escreva o código.
Insira o código de teste no editor de nós PyODPS. O exemplo a seguir demonstra o uso de APIs PyODPS para operações de tabela. Para obter mais informações sobre operações de tabela e SQL, consulte Tables e SQL.
from odps import ODPS # In DataWorks PyODPS nodes, a global variable (`o` or `odps`) is available by default as the MaxCompute entry. You can use it directly without defining it manually. table = o.create_table('my_new_table', 'num bigint, id string', if_not_exists=True) # Insert data into the non-partitioned table my_new_table. records = [[111, 'aaa'], [222, 'bbb'], [333, 'ccc'], [444, '中文']] o.write_table(table, records) # Read data from the non-partitioned table my_new_table. for record in o.read_table(table): print(record[0],record[1]) # Read data from the table by executing an SQL statement. result = o.execute_sql('select * from my_new_table;',hints={'odps.sql.allow.fullscan': 'true'}) # Read the SQL execution results. with result.open_reader() as reader: for record in reader: print(record[0],record[1]) # Drop the table to release resources. table.drop() -
Execute o código.
Após editar o código, clique no ícone
. Quando a execução for concluída, visualize os resultados na aba Runtime Log. A saída de log a seguir indica sucesso.2023-07-21 15:06:41 INFO ======================================================== Executing user script with PyODPS 0.11.2.3 Tunnel session created: <TableUploadSession xxx > Tunnel session created: <TableDownloadSession xxx > 111 aaa 222 bbb 333 ccc 444 中文 Tunnel session created: <InstanceDownloadSession id=xxx project_name=xxx > 111 aaa 222 bbb 333 ccc 444 中文 2023-07-21 15:06:49 INFO ======================================================== 2023-07-21 15:06:49 INFO Exit code of the Shell command 0 2023-07-21 15:06:49 INFO --- Invocation of Shell command completed --- 2023-07-21 15:06:49 INFO Shell run successfully! 2023-07-21 15:06:49 INFO Current task status: FINISH 2023-07-21 15:06:49 INFO Cost time is: 7.507s /home/admin/alisatasknode/taskinfo/xxx xxx .log-END-EOF
-