Cria uma função definida pelo usuário (UDF) em um projeto do MaxCompute.
Pré-requisitos
Antes de começar, verifique se você:
Adicionou os recursos necessários ao seu projeto do MaxCompute com o comando
ADD JAR. Para mais informações, consulte ADD JAR.
Limitações
Os nomes das funções devem ser exclusivos no projeto. Não crie uma função com o mesmo nome de outra já existente.
As UDFs não podem sobrescrever funções integradas do MaxCompute. Apenas o proprietário do projeto pode usar UDFs para essa finalidade. Se uma UDF sobrescrever uma função integrada, o Logview do job exibirá um aviso na seção Summary após a execução da instrução SQL.
Sintaxe
CREATE FUNCTION <function_name> AS <'package_to_class'> USING <'resource_list'>;
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome da UDF a criar. Deve ser exclusivo no projeto. |
|
|
Sim |
Classe da UDF. Diferencia maiúsculas de minúsculas e deve estar entre aspas simples ( |
|
|
Sim |
Recursos usados pela UDF. Devem estar entre aspas simples ( |
Observações sobre package_to_class para UDFs Python
O nome do script Python refere-se ao nome subjacente do recurso que o identifica exclusivamente. Por exemplo, se você carregar um recurso como pyudf_test.py e depois renomeá-lo para PYUDF_TEST.py no DataStudio ou substituí-lo pelo cliente MaxCompute, o nome subjacente do recurso permanecerá pyudf_test.py. Portanto, ao registrar a UDF, o nome da classe deve ser pyudf_test.SampleUDF. Execute LIST RESOURCES; para visualizar os nomes subjacentes de todos os recursos.
Observações sobre resource_list
A lista deve incluir os recursos que contêm o código da UDF. Certifique-se de que esses recursos já foram carregados no MaxCompute.
Se a UDF chamar a Distributed Cache API para ler arquivos de recurso, inclua também esses arquivos na lista.
Se o schema estiver habilitado e for necessário usar recursos de outros projetos, consulte Trabalhar com objetos em um schema.
Exemplos
Criar uma UDF Java
O exemplo abaixo cria a função my_lower. A classe da UDF Java org.alidata.odps.udf.examples.Lower está em my_lower.jar.
CREATE FUNCTION my_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
Criar uma UDF Python de outro projeto
Este exemplo cria a função my_lower. A classe da UDF Python MyLower está definida em pyudf_test.py, no projeto test_project.
CREATE FUNCTION my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
Criar uma UDF com múltiplas dependências de recursos
O exemplo a seguir cria a função test_udtf. A classe da UDF Java com.aliyun.odps.examples.udf.UDTFResource está em udtfexample1.jar. A função também depende de um recurso FILE (file_resource.txt), um recurso Table (table_resource1) e um recurso Archive (test_archive.zip).
CREATE FUNCTION test_udtf AS 'com.aliyun.odps.examples.udf.UDTFResource' USING 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';
Próximos passos
FUNCTION: Crie uma função SQL temporária aplicável apenas ao script SQL atual, sem armazenamento no sistema de metadados do MaxCompute.
DROP FUNCTION: Exclua uma UDF existente de um projeto do MaxCompute.
DELETE FUNCTION: Exclua uma função com o método
delete_function()de um objeto de entrada do MaxCompute.DESC FUNCTION: Visualize detalhes de uma UDF, como nome, proprietário, data de criação, nome da classe e lista de recursos.
LIST FUNCTIONS: Liste todas as UDFs em um projeto do MaxCompute.
UPDATE FUNCTION: Atualize uma UDF com o método
updatedo MaxCompute.