Debe registrar una UDF para utilizarla en un despliegue SQL. Este tema describe cómo registrar, actualizar y eliminar UDFs.
Antes de empezar
Si un usuario RAM o un rol RAM necesita gestionar UDFs, asegúrese de que tenga permiso para acceder al namespace de destino. Para obtener más información, consulte development console authorization.
-
Para evitar conflictos de dependencias en archivos JAR al desarrollar UDFs, siga estas pautas:
Asegúrese de que la versión de Flink que seleccione en la página de desarrollo coincida con la versión de Flink en su dependencia POM.
Para las dependencias relacionadas con Flink, establezca su scope como provided agregando
<scope>provided</scope>.Utilice Apache Maven Shade Plugin para empaquetar otras dependencias de terceros. Para obtener más información, consulte Apache Maven Shade Plugin.
NotaPara obtener más información sobre los conflictos de dependencias de Flink, consulte How do I troubleshoot Flink dependency conflicts?.
Registrar una UDF
UDFs de catálogo
-
Vaya a la página de registro de UDF.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
En la columna Actions del workspace de destino, haga clic en Console.
En el panel de navegación izquierdo, haga clic en .
Haga clic en la pestaña Functions.
Haga clic en Register UDF.
-
Cargue el archivo JAR de la UDF.
Puede cargar un archivo JAR de UDF de una de las siguientes maneras:
-
Upload a file: Haga clic en Select a file junto al campo Select a file para elegir su artefacto de UDF. Si la UDF tiene dependencias, haga clic en Select a file junto al campo Dependency File para cargar los archivos necesarios.
NotaSu archivo de UDF se carga en el directorio sql-artifacts del bucket de OSS que seleccionó.
Para una UDF de Java, las dependencias pueden empaquetarse en el archivo JAR de la UDF o cargarse por separado. Para una UDF de Python, se recomienda cargar las dependencias por separado.
-
External URL: Para usar un archivo de UDF de otro servicio, proporcione su URL externa.
NotaSe admiten dos tipos de URLs externas:
El bucket de OSS asociado con su workspace de Flink. Consulte los detalles del bucket en la página Workspace Details del Portal de gestión.
Una URL para un sistema de almacenamiento externo al que Realtime Compute for Apache Flink tenga acceso (lectura pública o con permiso otorgado).
-
Haga clic en OK.
-
En la página Available Functions, seleccione las UDFs que desea registrar y haga clic en Create Function.
La consola de desarrollo analiza sintácticamente el archivo de artefacto, identifica las clases que utilizan las interfaces UDF, UDAF y UDTF de Flink, y completa automáticamente el campo Function Name con los nombres de las clases. Una vez registrada una UDF, puede consultarla en la lista Functions. Aparece un icono "fx" amarillo a la izquierda de cada UDF registrada.
NotaCuando registra una UDF de catálogo, se utiliza la última versión de Flink para el análisis sintáctico de forma predeterminada. Si su despliegue SQL utiliza una versión anterior del motor, esto puede causar problemas de incompatibilidad. Para resolverlo, puede implementar el código de la UDF según la versión del motor requerida y registrarla como una UDF de nivel de despliegue. Para obtener más información, consulte Deployment-level UDFs.
UDFs de nivel de despliegue
Las UDFs de Python de nivel de despliegue solo son compatibles con VVR 8.0.3 y versiones posteriores.
Cuando utiliza una UDF de Python de nivel de despliegue, puede configurar archivos de dependencias mediante parámetros como
python.filesopython.archivesen los parámetros del despliegue.Cuando utiliza una UDF de Python de nivel de despliegue, no se admite la verificación de sintaxis. Debe omitir la verificación de sintaxis al iniciar el despliegue.
Siga estos pasos para registrar una UDF de nivel de despliegue:
-
Cargue el archivo JAR de la UDF o el archivo de Python.
En el panel de navegación izquierdo, vaya a Artifacts y cargue el archivo JAR de la UDF o el archivo de Python.
-
Especifique la UDF de nivel de despliegue en el despliegue.
En la sección Additional Dependencies del despliegue, especifique el archivo JAR de la UDF o el archivo de Python.
-
Registre la UDF de nivel de despliegue.
-
UDF de Java
CREATE TEMPORARY FUNCTION yourfunctionname; -
UDF de Python
CREATE TEMPORARY FUNCTION yourfunctionname LANGUAGE Python;
-
Actualizar una UDF
Siga estos pasos para actualizar un archivo JAR de UDF después de agregar una nueva UDF o modificar una existente.
-
Vaya a la página de registro de UDF.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
En la columna Actions del workspace de destino, haga clic en Console.
En el panel de navegación izquierdo, haga clic en .
Haga clic en la pestaña Functions.
En la lista Functions, pase el cursor sobre el nombre de la UDF de destino y haga clic en el icono
.-
Cargue el archivo JAR de la UDF. En el cuadro de diálogo Update UDF JAR, seleccione el método Upload a file o External URL, configure los campos Select a file y Dependency File, y haga clic en Modify.
ImportanteEl nuevo archivo JAR de la UDF debe contener las clases de todas las UDFs registradas actualmente.
Los cambios en el nuevo archivo JAR de la UDF solo surten efecto en despliegues nuevos o reiniciados. Los despliegues en ejecución continúan usando el archivo antiguo hasta que se reinician.
Haga clic en Modify.
Eliminar una UDF
Antes de eliminar un archivo JAR de UDF, asegúrese de que ningún despliegue ni archivo SQL haga referencia a las UDFs registradas desde él.
Para eliminar un archivo JAR de UDF, siga estos pasos:
-
Vaya a la página de registro de UDF.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
En la columna Actions del workspace de destino, haga clic en Console.
En el panel de navegación izquierdo, haga clic en .
Haga clic en la pestaña Functions.
En la lista Functions, pase el cursor sobre el nombre de la UDF de destino y haga clic en el icono
.-
Seleccione la casilla Delete all functions and the associated file.
Para eliminar el archivo JAR de la UDF, también debe eliminar todas las UDFs que se registraron desde él para evitar inconsistencias en los datos.
Haga clic en OK.
Temas relacionados
Para obtener información sobre los tipos, paso de parámetros, uso y demostraciones de UDFs basadas en JAR, consulte Java UDFs y UDAFs.
Para obtener información sobre los tipos, gestión de dependencias, depuración, ajuste, uso y demostraciones de UDFs de Python, consulte Python UDFs y UDAFs.