Todos os produtos
Search
Central de documentação

MaxCompute:Primeiros passos

Última atualização: Sep 07, 2026

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

Procedimento

  1. 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.

    1. Crie um fluxo de trabalho.

      Acesse a página Data Studio, clique com o botão direito em Business Flow e selecione Create Workflow.

    2. Crie um nó PyODPS.

      Clique com o botão direito no novo fluxo de trabalho, escolha Create Node > MaxCompute > PyODPS 3, insira um nome para o nó e clique em Submit.

  2. Edite o nó PyODPS.

    1. 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()
    2. 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