Aller au contenu principal

Utilisation d'Unity Catalog avec Structured Streaming

Cette page explique comment utiliser Structured Streaming avec Unity Catalog pour gérer la gouvernance des données de vos charges de travail incrémentielles et de streaming sur Databricks.

Quelles fonctionnalités Structured Streaming prend en charge Unity Catalog ?

Unity Catalog n'ajoute aucune limite explicite aux sources et récepteurs Structured Streaming disponibles sur Databricks.

Avec Unity Catalog et Structured Streaming, vous pouvez :

  • Stream des données à partir de tables gérées et externes. Consultez les tables gérées Unity Catalog pour Delta Lake et Apache Iceberg.
  • Utilisez des emplacements externes gérés par Unity Catalog pour interagir avec les données à l'aide d'URI de stockage d'objets.
  • Écrivez dans des tables externes en utilisant des noms de table ou des chemins de fichier. Pour interagir avec des tables gérées, vous devez utiliser le nom de la table.

Pour les points de contrôle Structured Streaming, vous devez utiliser des chemins dans des emplacements externes gérés par Unity Catalog. Pour en savoir plus sur la connexion sécurisée du stockage avec Unity Catalog, consultez Connecter le stockage d'objets cloud à l'aide de Unity Catalog.

Lire une vue Unity Catalog comme un stream

Dans Databricks Runtime 14.3 LTS et versions ultérieures, vous pouvez utiliser Structured Streaming pour lire des vues enregistrées avec Unity Catalog. Les tables sous-jacentes doivent utiliser le format Delta Lake. Pour les autres limitations, consultez Limitations.

Pour lire une vue avec Structured Streaming, utilisez la méthode .table() avec l'identifiant de la vue :

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

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

Si vous modifiez la définition de la vue pour ajouter ou modifier les tables référencées dans la vue, vous ne pouvez pas utiliser le même point de contrôle de streaming.

Options de streaming prises en charge

Le lecteur de streaming applique des options aux fichiers et aux métadonnées des tables Delta Lake sous-jacentes pour la vue spécifiée.

Les options suivantes sont prises en charge :

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

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

Si vous fournissez des options non prises en charge, telles que readChangeFeed, Spark lève cette exception :

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

Opérations de streaming prises en charge

Opérations prises en charge comprennent :

Opérations

Description

Opérateur

Exemple

Projet

Contrôle les autorisations au niveau des colonnes.

SELECT... FROM...

CREATE VIEW project_view AS SELECT id, value FROM source_table

Filtrer

Contrôle les autorisations au niveau des lignes

WHERE...

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

Union de tous

Résultats de plusieurs tables

UNION ALL

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

Opérations

Description

Opérateur

Exemple

Projet

Contrôle les autorisations au niveau des colonnes.

SELECT... FROM...

CREATE VIEW project_view AS SELECT id, value FROM source_table

Filtrer

Contrôle les autorisations au niveau des lignes

WHERE...

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

Union de tous

Résultats de plusieurs tables

UNION ALL

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

Les opérations non prises en charge incluent les agrégations, le tri et les fonctions basées sur des tables telles que table_changes(). Pour plus de détails sur les fonctions à valeur tabulaire, consultez Invocation de fonction à valeur tabulaire (TVF).

Si vous Stream à partir d’une vue avec une opération non prise en charge, Spark génère cette exception :

Console
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.

Limitations

  • Le mode de traitement continu d'Apache Spark n'est pas pris en charge. Consultez Traitement continu dans le Guide de programmation de Spark Structured Streaming.
  • Pour obtenir la liste des fonctionnalités de Structured Streaming qui ne sont pas prises en charge sur Unity Catalog en fonction du mode d'accès au compute, consultez les sections Limitations du streaming et Exigences relatives au streaming et aux vues matérialisées sur le compute dédié.
  • Les vues en tant que source de streaming ont des limitations supplémentaires :
    • Vous ne pouvez diffuser en Stream que depuis des vues qui interrogent les tables Delta Lake. Les autres sources de données ne sont pas prises en charge.
    • Vous devez enregistrer les vues auprès de Unity Catalog. Voir Créer une vue.
    • Les lectures en streaming sur les vues ne prennent pas en charge toutes les Opérations ou options. Consultez Opérations de streaming prises en charge et Options de streaming prises en charge.
    • Si vous ajoutez une nouvelle colonne à une vue avant qu’un Stream ne mette à jour le schéma de la table sous-jacente, le Stream échoue avec une erreur de colonne manquante. Vous devez ajouter la nouvelle colonne à la table sous-jacente, attendre que le Stream traite cette version de table, puis ajouter la colonne à la vue.