Todos os produtos
Search
Central de documentação

MaxCompute:Visão geral

Última atualização: Oct 10, 2026

O MaxCompute oferece diversas funções integradas para atender aos requisitos do seu negócio. Caso as funções integradas do MaxCompute não sejam suficientes, escreva código para criar funções definidas pelo usuário (UDFs) seguindo o processo de desenvolvimento e os exemplos descritos neste tópico.

Informações básicas

No sentido amplo, as funções definidas pelo usuário incluem três tipos: função escalar definida pelo usuário (UDF), função com valor de tabela definida pelo usuário (UDTF) e função de agregação definida pelo usuário (UDAF). No sentido estrito, o termo UDF refere-se apenas às funções escalares definidas pelo usuário. A tabela a seguir descreve os tipos de UDF compatíveis com o MaxCompute.

Tipo de UDF

Nome

Cenário

UDF

função escalar definida pelo usuário

Aplicável a cenários em que os dados de entrada e saída têm um mapeamento de um para um. Estabelece uma relação direta entre a entrada e a saída: a cada linha de dados lida, a UDF retorna um único valor de saída.

UDTF

função com valor de tabela definida pelo usuário, também conhecida como UDF de tabela

Aplicável a cenários com mapeamento de um para muitos entre os dados de entrada e saída. Estabelece uma relação de um para muitos: a cada linha de dados lida, a UDTF retorna múltiplos valores, tratados como uma tabela.

UDAF

função de agregação definida pelo usuário

Estabelece um mapeamento de muitos para um entre os dados de entrada e saída. A função agrega múltiplos registros de entrada para gerar um único valor de saída.

Além das UDFs mencionadas, o MaxCompute oferece as seguintes UDFs para cenários específicos.

Tipo de UDF

Cenário

Code-embedded UDFs

Para simplificar o processo de desenvolvimento de UDFs do MaxCompute e visualizar a lógica do código, incorpore código Java ou Python diretamente em scripts SQL.

UDFs (SQL user-defined functions)

Se o seu código contiver trechos duplicados, utilize UDFs SQL para aumentar a taxa de reutilização de código e simplificar o desenvolvimento.

Geospatial UDFs

Utilize funções geoespaciais do Hive para analisar dados espaciais no MaxCompute.

Limites

  • Acesso à Internet por meio de UDFs

    Por padrão, o MaxCompute não permite o acesso à Internet por meio de UDFs. Caso precise acessar a Internet usando UDFs, preencha o formulário de solicitação de conexão de rede de acordo com as necessidades do seu negócio e envie a solicitação. A equipe de suporte técnico do MaxCompute entrará em contato prontamente para habilitar a conectividade de rede. Para obter mais informações sobre como preencher o formulário de solicitação de conexão de rede, consulte Network connection process.

  • Acesso a uma VPC por meio de UDFs

    Por padrão, o MaxCompute não permite o acesso a recursos em VPCs por meio de UDFs. Para acessar recursos de uma VPC usando UDFs, é necessário estabelecer uma conexão de rede entre o MaxCompute e a VPC. Para mais detalhes sobre as operações relacionadas, consulte Access VPC resources from a UDF.

  • Leitura de dados de tabelas por meio de UDFs, UDAFs ou UDTFs

    Não é possível usar UDFs, UDAFs ou UDTFs para ler dados dos seguintes tipos de tabelas:

    • Tabelas com evolução de schema

    • Tabelas com tipos de dados complexos

    • Tabelas com tipos de dados JSON

    • Tabelas transacionais

Precauções

Antes de usar UDFs, observe os seguintes pontos:

  • As UDFs não superam as funções integradas em desempenho. Priorize o uso de funções integradas para implementar a lógica do seu negócio.

  • Ao usar uma UDF em instruções SQL, o consumo de memória de um job de computação pode exceder o tamanho de memória alocado por padrão ao processar um grande volume de dados com ocorrência de data skew (distorção de dados). Nessa situação, execute o comando set odps.sql.udf.joiner.jvm.memory=xxxx; no nível da sessão para resolver o problema. Para mais informações sobre UDFs, consulte FAQ about MaxCompute UDFs.

  • Se o nome de uma UDF for igual ao de uma função integrada, o sistema prioriza a chamada da UDF. Por exemplo, se a UDF CONCAT e a função integrada CONCAT existirem simultaneamente no MaxCompute, o sistema chamará automaticamente a UDF CONCAT em vez da função integrada. Para chamar a função integrada, adicione o símbolo :: antes da função integrada. Por exemplo, use select ::concat('ab', 'c');.

Desenvolvimento de UDFs: ferramentas compatíveis e processo geral

Esta seção descreve como desenvolver uma UDF, UDTF ou UDAF.

Nota

O processo de desenvolvimento de Code-embedded UDFs, UDFs (SQL user-defined functions) e Geospatial UDFs é diferente. Para mais informações, consulte a documentação relacionada.

Usar Java para desenvolver UDFs

A figura a seguir ilustra o processo de desenvolvimento de uma UDF do MaxCompute em Java.

Java开发流程

Procedimento

Descrição

Plataforma

Precauções ou referências

1

Opcional

Antes de usar o Maven para escrever código, adicione as dependências do SDK relacionadas ao arquivo POM. Isso garante a compilação do código. O exemplo a seguir mostra uma dependência do SDK:

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-udf</artifactId>
   <version>0.29.10-public</version>
</dependency>

Pesquise por odps-sdk-udf nos repositórios do Maven para obter a versão da dependência do SDK.

  • IntelliJ IDEA (Maven)

Nenhuma.

2

Obrigatório

Escreva o código da UDF de acordo com as necessidades do seu negócio.

Ao usar Java para desenvolver UDFs, cumpra os requisitos das especificações de desenvolvimento de UDFs em Java. Para mais informações, consulte UDF development specifications and general process (Java).

3

Obrigatório

Depure a UDF: execute-a na sua máquina local ou realize testes de unidade para verificar se o resultado atende às expectativas.

4

Obrigatório

Depure o código da UDF para garantir o empacotamento em um arquivo JAR após a execução bem-sucedida na sua máquina local.

5

Obrigatório

Envie o arquivo JAR como recurso para o seu projeto do MaxCompute.

Use um dos três métodos a seguir para enviar recursos e registrar funções:

6

Obrigatório

Crie uma UDF com base no arquivo JAR que você enviou.

7

Opcional

Chame a UDF no código de consulta de dados.

Nenhuma.

Usar Python para desenvolver UDFs

A figura a seguir ilustra o processo de desenvolvimento de uma UDF do MaxCompute em Python.Python开发流程

Procedimento

Descrição

Plataforma

Precauções ou referências

1

Obrigatório

Escreva uma UDF de acordo com as necessidades do seu negócio.

Get started with MaxCompute Studio

Ao usar Python para desenvolver UDFs, cumpra os requisitos das especificações de desenvolvimento de UDFs em Python. Para mais informações, consulte UDF development specifications and general process (Python 3) ou UDF development specifications and general process (Python 2).

2

Obrigatório

Depure a UDF: execute-a na sua máquina local ou realize testes de unidade para verificar se o resultado atende às expectativas.

3

Obrigatório

Envie arquivos Python ou os recursos necessários, como recursos de arquivo, recursos de tabela e pacotes de terceiros, para um projeto do MaxCompute.

Use um dos três métodos a seguir para enviar recursos e registrar funções:

4

Obrigatório

Crie uma UDF com base nos arquivos Python ou nos recursos necessários que você enviou.

5

Opcional

Chame a UDF no código de consulta de dados.

Nenhuma.

Referência de desenvolvimento: SDK do MaxCompute

A tabela a seguir descreve os SDKs fornecidos pelo MaxCompute. Para mais informações sobre os pacotes incluídos em cada SDK e as classes nesses pacotes, consulte o SDK do MaxCompute.

Nome do SDK

Descrição

odps-sdk-core

Fornece classes para gerenciar os recursos básicos do MaxCompute.

odps-sdk-commons

Fornece utilitários comuns para Java.

odps-sdk-udf

Fornece a interface principal para a funcionalidade de UDFs.

odps-sdk-mapred

Fornece a API do MapReduce.

odps-sdk-graph

Fornece a API do Graph.

Chamar uma UDF

Depois de desenvolver e registrar uma UDF no MaxCompute, use-a no processo subsequente de desenvolvimento de jobs. Use os seguintes métodos para chamar uma UDF:

  • Usar uma UDF em um projeto do MaxCompute: o método é semelhante ao uso de built-in functions. Use uma função definida pelo usuário da mesma forma que usaria uma função integrada.

  • Usar uma UDF entre projetos: use uma UDF do Projeto B no Projeto A. A instrução a seguir mostra um exemplo: select B:udf_in_other_project(arg0, arg1) as res from table_t;. Para mais informações sobre o compartilhamento entre projetos, consulte Cross-project resource access based on packages.

Exemplo de desenvolvimento de UDF