Crea una función definida por el usuario (UDF) en un proyecto de MaxCompute.
Requisitos previos
Antes de empezar, asegúrese de haber:
Agregado los recursos obligatorios a su proyecto de MaxCompute mediante el comando
ADD JAR. Para obtener más información, consulte ADD JAR.
Limitaciones
Los nombres de las funciones deben ser únicos dentro de un proyecto. No puede crear una función con el mismo nombre que una función existente.
Las UDF no pueden sobrescribir las funciones integradas de MaxCompute. Solo el propietario del proyecto puede usar UDF para sobrescribir funciones integradas. Si una UDF sobrescribe una función integrada, aparecerá una advertencia en Summary del Logview del trabajo después de ejecutar la sentencia SQL.
Sintaxis
CREATE FUNCTION <function_name> AS <'package_to_class'> USING <'resource_list'>;
Parámetros
|
Parameter |
Required |
Description |
|
|
Sí |
El nombre de la UDF que se va a crear. Debe ser único dentro del proyecto. |
|
|
Sí |
La clase de la UDF. Distingue entre mayúsculas y minúsculas. Debe ir entre comillas simples ( |
|
|
Sí |
Los recursos que utiliza la UDF. Deben ir entre comillas simples ( |
Notas sobre package_to_class para UDF de Python
El nombre del script de Python hace referencia al nombre subyacente del recurso que lo identifica de forma única. Por ejemplo, si carga un recurso como pyudf_test.py y luego le cambia el nombre a PYUDF_TEST.py en DataStudio o lo sobrescribe con el cliente de MaxCompute, el nombre subyacente del recurso seguirá siendo pyudf_test.py. Por lo tanto, al registrar la UDF, el nombre de la clase debe ser pyudf_test.SampleUDF. Ejecute LIST RESOURCES; para consultar los nombres subyacentes de todos los recursos.
Notas sobre resource_list
La lista debe incluir los recursos que contienen el código de la UDF. Asegúrese de que dichos recursos ya estén cargados en MaxCompute.
Si la UDF llama a la API de Distributed Cache para leer archivos de recursos, incluya también esos archivos en la lista.
Si el esquema está habilitado y necesita utilizar recursos de otros proyectos, consulte Work with objects in a schema.
Ejemplos
Crear una UDF de Java
En el siguiente ejemplo se crea la función my_lower. La clase de la UDF de Java org.alidata.odps.udf.examples.Lower se encuentra en my_lower.jar.
CREATE FUNCTION my_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
Crear una UDF de Python desde otro proyecto
En el siguiente ejemplo se crea la función my_lower. La clase de la UDF de Python MyLower está definida en pyudf_test.py dentro del proyecto test_project.
CREATE FUNCTION my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
Crear una UDF con varias dependencias de recursos
En el siguiente ejemplo se crea la función test_udtf. La clase de la UDF de Java com.aliyun.odps.examples.udf.UDTFResource se encuentra en udtfexample1.jar. La función también depende de un recurso FILE (file_resource.txt), un recurso Table (table_resource1) y un 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';
Pasos siguientes
FUNCTION: Cree una función SQL temporal que solo se aplique al script SQL actual y no se almacene en el sistema de metadatos de MaxCompute.
DROP FUNCTION: Elimine una UDF existente de un proyecto de MaxCompute.
DELETE FUNCTION: Elimine una función mediante el método
delete_function()de un objeto de entrada de MaxCompute.DESC FUNCTION: Consulte los detalles de una UDF, incluido su nombre, propietario, hora de creación, nombre de clase y lista de recursos.
LIST FUNCTIONS: Consulte todas las UDF de un proyecto de MaxCompute.
UPDATE FUNCTION: Actualice una UDF mediante el método
updatede MaxCompute.