Utilisation d’Unity Catalog avec Structured Streaming

Utilisez Structured Streaming avec Unity Catalog pour gérer la gouvernance des données pour vos charges de travail incrémentielles et de diffusion en continu sur Azure Databricks. Ce document présente les fonctionnalités prises en charge, tout en suggérant également les meilleures pratiques recommandées pour l’utilisation simultanée d’Unity Catalog et de Structured Streaming.

Quelle fonctionnalité Structured Streaming prend en charge Unity Catalog ?

Unity Catalog n’ajoute aucune limite explicite pour les sources et récepteurs Structured Streaming disponibles sur Azure Databricks. Le modèle de gouvernance des données d’Unity Catalog vous permet de diffuser en continu des données à partir de tables managées et externes dans Unity Catalog. Vous pouvez également utiliser des emplacements externes managés par Unity Catalog pour interagir avec les données à l’aide d’URI de stockage d’objets. Vous pouvez écrire dans des tables externes à l’aide de noms de tables ou de chemins d’accès de fichiers. Vous devez interagir avec les tables gérées sur Unity Catalog en utilisant le nom de la table.

Utilisez des emplacements externes managés par Unity Catalog lors de la spécification de chemins d’accès pour les points de contrôle Structured Streaming. Pour en savoir plus sur la connexion sécurisée du stockage avec le catalogue Unity, consultez Se connecter au stockage d’objets cloud et aux services à l’aide du catalogue Unity.

La prise en charge de la fonctionnalité de streaming structuré diffère selon la version de Databricks Runtime que vous exécutez et selon que vous utilisez le mode d'accès cluster assigné ou partagé. Pour plus d’informations, consultez les limitations de diffuser en continu pour Unity Catalog.

Pour une démonstration de bout en bout à l’aide de Structured Streaming sur Unity Catalog, consultez Tutoriel : Exécuter un pipeline d’analytique lakehouse de bout en bout.

Quelle fonctionnalité Structured Streaming n’est pas prise en charge Unity Catalog ?

Pour obtenir la liste des fonctionnalités Structured Streaming non prises en charge dans Unity Catalog, consultez l’article Limitations de la diffusion en continu dans Unity Catalog.

Lire une vue Unity Catalog en tant que flux

Important

Cette fonctionnalité est disponible en préversion publique.

Dans Databricks Runtime 14.1 et versions ultérieures, vous pouvez utiliser le flux structuré pour effectuer des lectures en continu de vues inscrites auprès de Unity Catalog. Azure Databricks prend uniquement en charge les lectures en continu de vues définies sur des tables Delta.

Pour lire une vue avec le flux structuré, fournissez l’identificateur de la vue à la méthode .table(), comme dans l’exemple suivant :

df = (spark.readStream
  .table("demoView")
)

Les utilisateurs doivent disposer de privilèges SELECT sur la vue cible.

Options prises en charge pour la configuration des lectures en continu sur des vues

Les options suivantes sont prises en charge lors de la configuration des lectures en continu sur des vues :

  • maxFilesPerTrigger
  • maxBytesPerTrigger
  • ignoreDeletes
  • skipChangeCommits
  • withEventTimeOrder
  • startingTimestamp
  • startingVersion

Le lecteur en continu applique ces options aux fichiers et métadonnées définissant les tables Delta sous-jacentes.

Important

Les lectures sur des vues définies avec UNION ALL ne prennent pas en charge les options withEventTimeOrder et startingVersion.

Opérations prises en charge dans les vues sources

Toutes les vues ne prennent pas en charge les lectures en continu. Les opérations non prises en charge dans les vues sources incluent les agrégations et le tri.

La liste suivante fournit des descriptions et des exemples de définitions de vue pour les opérations prises en charge :

  • Projet

    • Description : contrôle les autorisations au niveau des colonnes

    • Opérateur : SELECT... FROM...

    • Exemple d'instruction  :

      CREATE VIEW project_view AS
      SELECT id, value
      FROM source_table
      
  • Filter

    • Description : contrôle les autorisations au niveau des lignes

    • Opérateur : WHERE...

    • Exemple d'instruction  :

      CREATE VIEW filter_view AS
      SELECT * FROM source_table
      WHERE value > 100
      
  • Union all

    • Description : résultats de plusieurs tables

    • Opérateur : UNION ALL

    • Exemple d'instruction  :

      CREATE VIEW union_view AS
      SELECT id, value FROM source_table1
      UNION ALL
      SELECT * FROM source_table2
      

Remarque

Vous ne pouvez pas modifier la définition de vue pour ajouter ou modifier les tables référencées dans la vue et utiliser le même point de contrôle de diffusion en continu.

Limites

Les limites suivantes s'appliquent :

  • Vous ne pouvez diffuser en continu qu’à partir de vues sauvegardés par des tables Delta. Les vues définies sur d’autres sources de données ne sont pas prises en charge.

  • Vous devez inscrire les vues auprès de Unity Catalog.

  • L’exception suivante s’affiche si vous diffusez en continu à partir d’une vue avec un opérateur non pris en charge :

    UnsupportedOperationException: [UNEXPECTED_OPERATOR_IN_STREAMING_VIEW] Unexpected operator <operator> in the CREATE VIEW statement as a streaming source. A streaming view query must consist only of SELECT, WHERE, and UNION ALL operations.
    
  • L’exception suivante s’affiche si vous fournissez des options non prises en charge :

    AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.