Vous devez enregistrer une UDF pour l'utiliser dans un déploiement SQL. Cette rubrique explique comment enregistrer, mettre à jour et supprimer des UDF.
Avant de commencer
Si un utilisateur RAM ou un rôle RAM doit gérer des UDF, assurez-vous qu'il dispose des autorisations d'accès au namespace cible. Pour plus d'informations, consultez la section Autorisation de la console de développement.
-
Pour éviter les conflits de dépendances dans les fichiers JAR lors du développement d'UDF, suivez ces recommandations :
Assurez-vous que la version Flink sélectionnée sur la page de développement correspond à la version Flink indiquée dans vos dépendances POM.
Pour les dépendances liées à Flink, définissez leur scope sur
provideden ajoutant<scope>provided</scope>.Utilisez le plugin Apache Maven Shade pour empaqueter les autres dépendances tierces. Pour plus d'informations, consultez la documentation Apache Maven Shade Plugin.
RemarquePour plus d'informations sur les conflits de dépendances Flink, consultez la section Comment résoudre les conflits de dépendances Flink ?.
Enregistrer une UDF
Catalog UDFs
-
Accédez à la page d'enregistrement des UDF.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.
Dans le volet de navigation de gauche, cliquez sur .
Cliquez sur l'onglet Functions.
Cliquez sur Register UDF.
-
Téléchargez le fichier JAR de l'UDF.
Vous pouvez télécharger un fichier JAR d'UDF de l'une des manières suivantes :
-
Upload a file : Cliquez sur Select a file à côté du champ Select a file pour choisir votre artefact UDF. Si l'UDF possède des dépendances, cliquez sur Select a file à côté du champ Dependency File pour télécharger les fichiers requis.
RemarqueVotre fichier UDF est téléchargé dans le répertoire sql-artifacts du bucket OSS que vous avez sélectionné.
Pour une UDF Java, les dépendances peuvent être intégrées au fichier JAR de l'UDF ou téléchargées séparément. Pour une UDF Python, nous vous recommandons de télécharger les dépendances séparément.
-
External URL : Pour utiliser un fichier UDF provenant d'un autre service, fournissez son URL externe.
RemarqueDeux types d'URL externes sont pris en charge :
Le bucket OSS associé à votre espace de travail Flink. Consultez les détails du bucket sur la page Workspace Details dans le portail de gestion.
Une URL vers un système de stockage externe auquel Realtime Compute for Apache Flink a accès (accès public en lecture ou avec autorisation accordée).
-
Cliquez sur OK.
-
Sur la page Available Functions, sélectionnez les UDF que vous souhaitez enregistrer et cliquez sur Create Function.
La console de développement analyse le fichier artefact, identifie les classes utilisant les interfaces Flink UDF, UDAF et UDTF, et remplit automatiquement le champ Nom de la fonction avec les noms de classe. Une fois une UDF enregistrée, vous pouvez la consulter dans la liste Functions. Une icône « fx » jaune apparaît à gauche de chaque UDF enregistrée.
RemarqueLorsque vous enregistrez une Catalog UDF, la dernière version de Flink est utilisée par défaut pour l'analyse. Si votre déploiement SQL utilise une version antérieure du moteur, cela peut entraîner des problèmes d'incompatibilité. Pour résoudre ce problème, implémentez le code de l'UDF en fonction de la version du moteur requise et enregistrez-le en tant que Deployment-level UDF. Pour plus d'informations, consultez la section Deployment-level UDFs.
Deployment-level UDFs
Les Deployment-level Python UDF sont prises en charge uniquement dans VVR 8.0.3 et versions ultérieures.
Lorsque vous utilisez une Deployment-level Python UDF, vous pouvez configurer les fichiers de dépendance à l'aide de paramètres tels que
python.filesoupython.archivesdans les paramètres de déploiement.Lorsque vous utilisez une Deployment-level Python UDF, la vérification de la syntaxe n'est pas prise en charge. Vous devez ignorer la vérification de la syntaxe lors du démarrage du déploiement.
Suivez ces étapes pour enregistrer une Deployment-level UDF :
-
Téléchargez le fichier JAR ou Python de l'UDF.
Dans le volet de navigation de gauche, accédez à Artifacts et téléchargez le fichier JAR ou Python de l'UDF.
-
Spécifiez la Deployment-level UDF dans le déploiement.
Dans la section Additional Dependencies du déploiement, spécifiez le fichier JAR ou Python de l'UDF.
-
Enregistrez la Deployment-level UDF.
-
Java UDF
CREATE TEMPORARY FUNCTION yourfunctionname; -
Python UDF
CREATE TEMPORARY FUNCTION yourfunctionname LANGUAGE Python;
-
Mettre à jour une UDF
Suivez ces étapes pour mettre à jour un fichier JAR d'UDF après avoir ajouté une nouvelle UDF ou modifié une UDF existante.
-
Accédez à la page d'enregistrement des UDF.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.
Dans le volet de navigation de gauche, cliquez sur .
Cliquez sur l'onglet Functions.
Dans la liste Functions, survolez le nom de l'UDF cible et cliquez sur l'icône
.-
Téléchargez le fichier JAR de l'UDF. Dans la boîte de dialogue Update UDF JAR, sélectionnez la méthode Upload a file ou External URL, configurez les champs Select a file et Dependency File, puis cliquez sur Modify.
ImportantLe nouveau fichier JAR d'UDF doit contenir les classes de toutes les UDF actuellement enregistrées.
Les modifications apportées au nouveau fichier JAR d'UDF ne prennent effet que pour les nouveaux déploiements ou les déploiements redémarrés. Les déploiements en cours continuent d'utiliser l'ancien fichier jusqu'à ce qu'ils soient redémarrés.
Cliquez sur Modify.
Supprimer une UDF
Avant de supprimer un fichier JAR d'UDF, assurez-vous qu'aucun déploiement ni fichier SQL ne fait référence aux UDF enregistrées à partir de celui-ci.
Pour supprimer un fichier JAR d'UDF, procédez comme suit :
-
Accédez à la page d'enregistrement des UDF.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.
Dans le volet de navigation de gauche, cliquez sur .
Cliquez sur l'onglet Functions.
Dans la liste Functions, survolez le nom de l'UDF cible et cliquez sur l'icône
.-
Cochez la case Delete all functions and the associated file.
Pour supprimer le fichier JAR de l'UDF, vous devez également supprimer toutes les UDF qui ont été enregistrées à partir de celui-ci afin d'éviter les incohérences de données.
Cliquez sur OK.
Rubriques connexes
Pour obtenir des informations sur les types, le passage de paramètres, l'utilisation et les démonstrations des UDF basées sur des fichiers JAR, consultez les sections Java UDFs et UDAFs.
Pour obtenir des informations sur les types, la gestion des dépendances, le débogage, l'optimisation, l'utilisation et les démonstrations des UDF Python, consultez les sections Python UDFs et UDAFs.