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 :
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 :
maxFilesPerTriggermaxBytesPerTriggerignoreDeletesskipChangeCommitswithEventTimeOrderstartingTimestampstartingVersion
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 :
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. |
|
|
Filtrer | Contrôle les autorisations au niveau des lignes |
|
|
Union de tous | Résultats de plusieurs tables |
|
|
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 :
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.