Utilisation d’Unity Catalog avec Structured Streaming

Cette page montre comment utiliser Structured Streaming avec le catalogue Unity pour gérer la gouvernance des données pour vos charges de travail incrémentielles et de diffusion en continu sur Azure Databricks.

Quelle fonctionnalité Structured Streaming prend en charge Unity Catalog ?

Le catalogue Unity n'ajoute aucune limite explicite pour les sources et récepteurs Structured Streaming disponibles sur Azure Databricks.

Avec le catalogue Unity et le streaming structuré, vous pouvez :

  • Diffusez en continu des données à partir de tables managées et externes. Consultez les tables gérées par le catalogue Unity dans Azure Databricks 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 à l’aide de noms de tables ou de chemins d’accès de fichier. Pour interagir avec des tables managées, vous devez utiliser le nom de la table.

Pour les checkpoints de Structured Streaming, vous devez utiliser des chemins d’accès dans des emplacements externes gérés par Unity Catalog. Pour en savoir plus sur la connexion sécurisée du stockage avec le catalogue Unity, consultez Se connecter au stockage d’objets cloud à l’aide du catalogue Unity.

Lire une vue Unity Catalog en tant que flux

Dans Databricks Runtime 14.3 LTS et versions ultérieures, vous pouvez utiliser Structured Streaming pour lire des vues inscrites auprès du catalogue Unity. Les tables sous-jacentes doivent utiliser le format Delta Lake. Pour obtenir d’autres limitations, consultez Limitations.

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

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

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

Si vous modifiez la définition de 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 diffusion en continu prises en charge

Le lecteur de streaming applique les options aux fichiers et métadonnées des tables Delta sous-jacentes pour l’affichage spécifié.

Les options suivantes sont prises en charge :

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

Les opérations de lecture sur des 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 déclenche cette exception :

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

Opérations de diffusion en continu prises en charge

Les opérations prises en charge sont les suivantes :

Operation Description Operator Example
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 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 table telles que table_changes(). Pour plus de détails sur les fonctions à valeurs de table, consultez l’invocation d’une fonction à valeurs de table (TVF).

Si vous effectuez du streaming à partir d’une vue comportant une opération non prise en charge, Spark lève 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.

Limites

  • Le mode de traitement continu Apache Spark n’est pas pris en charge. Consultez Traitement continu dans le guide de programmation de Structured Streaming Spark.
  • Pour obtenir la liste des fonctionnalités de diffusion en continu structurée qui ne sont pas prises en charge sur le Catalogue Unity en fonction du mode d’accès à l'unité de calcul, consultez les limitations de streaming et les exigences en matière de diffusion en continu sur le calcul dédié et de vue matérialisée .
  • Les vues en tant que source de diffusion en continu présentent des limitations supplémentaires :