Opérateurs personnalisés dans Lakeflow Designer

Lakeflow Designer vous permet de créer des opérateurs personnalisés qui apparaissent directement dans la toile aux côtés d’opérateurs intégrés. Utilisez-les pour étendre Lakeflow Designer avec votre propre logique métier, vos calculs ou vos intégrations. Les opérateurs personnalisés étaient auparavant appelés opérateurs définis par l’utilisateur (ODU).

Les opérateurs personnalisés existent dans deux portées :

  • Local : L’opérateur appartient à un seul fichier de préparation visuelle des données. Décrivez la transformation, et Genie Code génère l’opérateur. Voir Créer un opérateur local personnalisé avec Genie Code.
  • Partagé : L’opérateur est enregistré dans l’espace de travail, donc vous et d’autres utilisateurs pouvez l’ajouter à n’importe quel fichier de préparation de données visuelles. Sa logique est une fonction Python ou une fonction du catalogue Unity, décrite dans YAML. Écrivez-le vous-même, ou demandez à Genie Code de le créer. Voyez comment fonctionnent les opérateurs personnalisés.

Note

Lorsque vous ajoutez un opérateur personnalisé qui a besoin de paquets Python ou de bibliothèques système que l'environnement du notebook ne possède pas, Designer vous invite à les ajouter. Sélectionnez Ajouter des dépendances, puis sélectionnez Appliquer dans le volet latéral Environnement pour les installer. Voir Sélectionner l’environnement serverless.

Créez un opérateur local personnalisé avec Genie Code

Lorsque Genie Code est disponible dans votre espace de travail, vous pouvez créer un opérateur personnalisé local à partir de la toile Lakeflow Designer :

  1. Dans le panneau Opérateurs , sélectionnez Créer un opérateur personnalisé.

  2. Entrez une description et, éventuellement, un nom. Sélectionnez Générer un aperçu.

    Tip

    Par exemple, entrez la description suivante :

    Count the business days between two date columns, excluding weekends. Let me choose the start and end date columns and name the output column.
    
  3. Examinez la configuration générée et la fonction Python, puis sélectionnez Approuver et créez.

Le concepteur stocke la définition de l’opérateur local dans le fichier courant et l’ajoute au volet Opérateurs . Utilisez le menu d’actions de l’opérateur pour modifier ou supprimer la définition. Vous devez retirer chaque instance de l’opérateur de la toile avant de pouvoir supprimer sa définition.

Publiez un opérateur sur mesure

Pour réutiliser un opérateur personnalisé local dans d’autres préparations de données visuelles, publiez-le : dans le volet Opérateurs , ouvrez le menu d’actions de l’opérateur et sélectionnez Publier. La publication crée un opérateur personnalisé partagé, met à jour chaque instance du fichier courant pour l’utiliser, et supprime la définition locale. Dans la boîte de dialogue, choisissez l’emplacement du fichier opérateur et indiquez s’il faut ajouter l’opérateur à votre registre Utilisateur ou Espace de travail.

Choisissez un type d’opérateur partagé

Les opérateurs personnalisés partagés se divisent en trois types :

  • python-run-function : fichier YAML autonome avec Python inline stocké dans l’espace de travail. Idéal pour les transformations de niveau DataFrame et les intégrations externes. Les autorisations sont gérées au niveau du fichier de l’espace de travail.
  • uc-udf: encapsule une fonction scalaire du catalogue Unity. Idéal pour les transformations au niveau des colonnes. L’accès est régi par les autorisations du catalogue Unity.
  • uc-udtf : encapsule une fonction Unity Catalog renvoyant une table. Idéal pour les transformations à l’échelle de la table, telles que le regroupement par apprentissage automatique et l’agrégation. L’accès est régi par les autorisations du catalogue Unity.
Fonctionnalité python-run-function uc-udf uc-udtf
Exemple de cas d’usage Transformations de DataFrame, intégrations d’API, notifications par e-mail Calculs au niveau des colonnes (IMC, taux d’intérêt) Regroupement par apprentissage automatique, agrégation sur l’ensemble des lignes
Input Cadres de données Valeurs uniques Table entière, ligne par ligne
Sortie Cadres de données Valeur unique Table (plusieurs lignes)
Nécessite la fonction Catalogue Unity Non Oui Oui
Gouvernance des accès Autorisations des fichiers de l’espace de travail Autorisations du catalogue Unity (EXECUTE, USE SCHEMA) Autorisations du catalogue Unity (EXECUTE, USE SCHEMA)
Langues prises en charge Python uniquement SQL ou Python dans un wrapper SQL SQL ou Python dans un wrapper SQL

Comment fonctionnent les opérateurs personnalisés

Un opérateur personnalisé partagé se compose de :

  • Logique d’opérateur : code qui s’exécute lorsque l’opérateur s’exécute. Il s’agit d’une fonction Python run() en ligne pour python-run-function les opérateurs, ou d’une fonction Unity Catalog pour les opérateurs uc-udf et uc-udtf. Voir Écrire la logique pour les opérateurs personnalisés de Lakeflow Designer.
  • Configuration YAML : indique au Concepteur Lakeflow comment présenter l’opérateur dans l’interface utilisateur, y compris le nom, la description, les paramètres d’entrée, les widgets d’interface utilisateur et les ports de l’opérateur. Tous les types d’opérateurs utilisent le custom-operator-v0.1.0 schéma. Pour un python-run-function opérateur, le YAML est un fichier d’espace de travail autonome qui contient également le code en ligne. Pour une fonction du catalogue Unity, le YAML est intégré dans le corps de la fonction. Voir la référence YAML de l’opérateur personnalisé.
  • Fichier d’inscription : entrée .custom_operators.yaml qui permet au Concepteur Lakeflow de découvrir l’opérateur. Consultez Enregistrer et déployer un opérateur dans le Concepteur de flux.

Construire un opérateur partagé

Pour construire un opérateur personnalisé partagé du début à la fin :

  1. Choisissez un type d’opérateur. Voir Choisir un type d’opérateur partagé.
  2. Écrivez et testez la logique de l’opérateur. Voir Écrire la logique pour les opérateurs personnalisés de Lakeflow Designer.
  3. Décrivez l’opérateur dans YAML : son nom, ses propriétés de configuration, ses widgets d’interface utilisateur et ses ports. Voir la référence YAML de l’opérateur personnalisé.
  4. Enregistrer l’opérateur : l’ajouter à .custom_operators.yaml. Consultez Enregistrer et déployer un opérateur dans le Concepteur de flux.
  5. Accordez des autorisations afin que d’autres utilisateurs puissent découvrir et exécuter l’opérateur. Voir Autorisations.
  6. Utilisez l’opérateur. Il apparaît dans le volet Opérateurs du Concepteur de flux, aux côtés des opérateurs intégrés.

Chaque tutoriel suit ces étapes pour un opérateur de bout en bout.

Tip

Pour créer un opérateur partagé python-run-function sans l’écrire vous-même, décrivez-le à Genie Code dans le volet latéral. Genie Code demande s’il faut enregistrer l’opérateur pour vous ou pour tout l’espace de travail, puis écrit le fichier YAML et l’enregistre. Vous devez encore accorder des permissions aux autres utilisateurs.

Inscrire et déployer votre opérateur sur Lakeflow Designer

Pour que votre opérateur apparaisse dans Lakeflow Designer, inscrivez-le dans un .custom_operators.yaml fichier :

  • Niveau de l’espace de travail : Placez le fichier à la racine de votre espace de travail pour rendre l’opérateur visible par tous les utilisateurs.
  • Niveau utilisateur : Placez le fichier dans votre dossier d’accueil de l’utilisateur (/Workspace/Users/<user-name>/.custom_operators.yaml) pour rendre les opérateurs visibles uniquement pour vous.

Note

Lakeflow Designer continue de lire les fichiers d’inscription nommés .user_defined_operators.yaml, donc les inscriptions existantes continuent de fonctionner.

Enregistrer de nouveaux opérateurs dans .custom_operators.yaml. Si le même dossier contient déjà un .user_defined_operators.yaml fichier, déplacez ses entrées vers .custom_operators.yaml. Lorsque les deux fichiers existent dans un dossier, Lakeflow Designer ne lit que .custom_operators.yaml.

La section operators: prend en charge les chemins d’accès aux fichiers, les références à des fonctions Unity Catalog et les motifs glob. Vous pouvez combiner des types d’entrée :

operators:
  # File path (python-run-function operators)
  - /Workspace/Users/me/operators/my_operator.yaml
  # Glob pattern (registers all matching files)
  - /Workspace/Users/me/operators/transforms/*.yaml
  # UC function reference (uc-udf and uc-udtf operators)
  - catalog: my_catalog
    schema: my_schema
    functionName: my_function

Mettre à jour ou supprimer un opérateur

Lorsque vous changez le code d’un opérateur, rafraîchissez vos opérateurs personnalisés pour charger le changement. Sous l’onglet Opérateurs du menu, cliquez sur Actualiser l’icône..

  • Si l’opérateur conserve la même valeur version, l’actualisation charge le code mis à jour.
  • Si l’opérateur a un nouveau version, l’opérateur sur le canevas vous propose de passer à cette nouvelle version (ou de conserver la version actuelle) après actualisation.

Pour supprimer un opérateur de Lakeflow Designer, supprimez son entrée de .custom_operators.yaml. Pour les opérateurs uc-udf et uc-udtf, vous pouvez également supprimer la fonction Unity Catalog sous-jacente avec DROP FUNCTION si vous n’en avez plus besoin.

Permissions

Autorisation Purpose
Accès en lecture à .custom_operators.yaml. Découvrez l’opérateur.
Accès en lecture au fichier YAML (python-run-function uniquement). Chargez la définition de l’opérateur.
EXÉCUTER autorisation sur la fonction Unity Catalog (opérateurs basés uniquement sur les fonctions Unity Catalog). Lancez l’opérateur.
USE SCHEMA sur le schéma (opérateurs basés uniquement sur les fonctions du catalogue Unity). Accédez au schéma où la fonction est créée.
Autres autorisations Selon votre opérateur, les utilisateurs peuvent nécessiter d’autres autorisations. Par exemple, USE CONNECTION sur une connexion Unity Catalog pour les appels à l’API HTTP.

Troubleshooting

Issue Solution
L’opérateur n’apparaît pas dans Lakeflow Designer. Vérifiez que .custom_operators.yaml existe et répertorie votre fonction ou votre chemin de fichier. Pour les opérateurs python-run-function, vérifiez le chemin du fichier et que le fichier YAML est accessible.
Échec de la validation du schéma. Vérifiez votre YAML sur le schéma officiel à l’adresse https://your-workspace.cloud.databricks.com/static/schemas/user-defined-operator-v0.1.0.json.
Permission refusée. Pour les opérateurs basés sur les fonctions du catalogue Unity, vérifiez que les utilisateurs ont EXECUTE sur la fonction et USE SCHEMA sur le schéma. Pour les opérateurs python-run-function, vérifiez que les utilisateurs disposent d’un accès en lecture au fichier YAML.
python-run-function l’opérateur échoue au moment de l’exécution. Vérifiez que la signature de fonction run() correspond à def run(config, inputs, spark). Vérifiez que les noms de port dans le code correspondent à YAML et que les clés de dictionnaire renvoyées correspondent aux valeurs de port name de sortie.
L’UDTF retourne des types incorrects. Les types de retour UDTF doivent être explicites ; vous ne pouvez pas référencer les types de colonnes d’entrée.

Ressources supplémentaires

Explorez les didacticiels suivants :

Example Catégorie Description
Expéditeur d’e-mail Gmail python-run-function Envoyez les données DataFrame en pièce jointe d’un e-mail au format CSV via Gmail.
Calculatrice d’intérêt composé uc-udf Calculez les valeurs futures d’investissement à l’aide de la formule d’intérêt composée.
Clustering k-moyennes uc-udtf Segmentez les données en clusters à l’aide de scikit-learn.
Envoyer un message Slack uc-udf Envoyez des notifications aux canaux Slack via l’API Slack.
Tous les widgets d’interface utilisateur uc-udf Opérateur de référence présentant tous les widgets d’interface utilisateur disponibles.

Pour écrire la logique des opérateurs, voir Écrire la logique pour les opérateurs personnalisés Lakeflow Designer. Pour une référence complète au schéma YAML, voir Référence YAML de l’opérateur personnalisé.