Utilisation d’Unity Catalog avec Structured Streaming
Article
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 des fonctionnalités de diffusion en continu structurée diffère selon la version de Databricks Runtime que vous exécutez et que vous utilisiez le mode d’accès au calcul affecté ou standard. Pour plus d’informations, consultez les limitations de diffuser en continu pour Unity Catalog.
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 :
Python
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
Description : contrôle les autorisations au niveau des lignes
Opérateur : WHERE...
Exemple d'instruction :
SQL
CREATEVIEW filter_view ASSELECT * FROM source_table
WHEREvalue > 100
Union all
Description : résultats de plusieurs tables
Opérateur : UNION ALL
Exemple d'instruction :
SQL
CREATEVIEW union_view ASSELECTid, valueFROM source_table1
UNIONALLSELECT * FROM source_table2
Notes
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.
Faites la démonstration d’une compréhension des tâches d’engineering données courantes pour implémenter et gérer des charges de travail d’engineering données sur Microsoft Azure en utilisant un certain nombre de services Azure.
Cet article contient des recommandations pour configurer les charges de travail de traitement incrémentielles de production avec Structured Streaming sur Azure Databricks afin de répondre aux exigences de latence et de coût pour les applications en temps réel ou par lots.
Consultez des exemples d’utilisation de la diffusion en continu de Spark avec Cassandra, Azure Synapse Analytics, les Notebooks Python et les blocs-notes Scala dans Azure Databricks.