Lire les tableaux de Delta Lake (Synapse ou emplacement externe)
Remarque
Nous allons mettre hors service Azure HDInsight sur AKS le 31 janvier 2025. Avant le 31 janvier 2025, vous devrez migrer vos charges de travail vers Microsoft Fabric ou un produit Azure équivalent afin d’éviter leur arrêt brutal. Les clusters restants de votre abonnement seront arrêtés et supprimés de l’hôte.
Seul le support de base sera disponible jusqu’à la date de mise hors service.
Important
Cette fonctionnalité est disponible actuellement en mode Aperçu. Les Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure contiennent davantage de conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou ne se trouvant pas encore en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez les Informations sur la préversion d’Azure HDInsight sur AKS. Pour toute question ou pour des suggestions à propos des fonctionnalités, veuillez envoyer vos requêtes et leurs détails sur AskHDInsight, et suivez-nous sur la Communauté Azure HDInsight pour plus de mises à jour.
Cet article donne un aperçu de la façon de lire une table Delta Lake sans avoir accès au metastore (Synapse ou autres metastores sans accès public).
Vous pouvez effectuer les opérations suivantes sur les tables à l’aide de Trino avec HDInsight sur AKS.
- Suppression
- UPDATE
- INSERT
- MERGE
Prérequis
Créer des schémas et des tables Delta Lake
Cette section montre comment créer une table Delta sur un emplacement préexistant étant donné que vous disposez déjà d'un catalogue Delta Lake configuré.
Parcourez le compte de stockage à l’aide de
Storage browser
dans le Portail Microsoft Azure jusqu’à l’emplacement du répertoire de base de votre table. Si cette table provient de Synapse, elle se trouve probablement sous un cheminsynapse/workspaces/.../warehouse/
et portera le nom de votre table et contiendra un répertoire_delta_log
. SélectionnezCopy URL
parmi les trois points situés à côté du dossier.Vous devez convertir ce chemin http en chemin ABFS (Azure Blob File System) :
Le chemin http de stockage est structuré comme ceci :
https://{{AZURE_STORAGE_ACCOUNT}}.blob.core.windows.net/{{AZURE_STORAGE_CONTAINER}}/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
Les chemins ABFS doivent ressembler à ceci :
abfss://{{AZURE_STORAGE_CONTAINER}}@{{AZURE_STORAGE_ACCOUNT}}.dfs.core.windows.net/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
Exemple :
abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/
Créez un schéma Delta Lake dans Trino.
CREATE SCHEMA delta.default;
Vous pouvez également créer un schéma dans un compte de stockage spécifique :
CREATE SCHEMA delta.default WITH (location = 'abfss://container@storageaccount.dfs.core.windows.net/trino/');
Utilisez la procédure
register_table
pour créer le tableau .CALL delta.system.register_table(schema_name => 'default', table_name => 'table_name', table_location => 'abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/');
Interrogez la table pour vérifier.
SELECT * FROM delta.default.table_name
Écrire des tables Delta Lake dans Synapse Spark
Utilisez format("delta")
pour enregistrer un dataframe en tant que table Delta, puis vous pouvez utiliser le chemin où vous avez enregistré le dataframe au format delta pour enregistrer la table dans Trino.
my_dataframe.write.format("delta").save("abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name")