Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Découvrez comment utiliser FSSPEC (Filesystem Spec) pour lire/écrire des données sur ADLS (Azure Data Lake Storage) à l’aide d’un service lié dans un pool Apache Spark serverless dans Azure Synapse Analytics.
Ce didacticiel vous montre comment effectuer les opérations suivantes :
- Lire/écrire des données ADLS dans une session Spark dédiée.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Prérequis
- Espace de travail Azure Synapse Analytics avec un compte de stockage Azure Data Lake Storage Gen2 configuré comme stockage par défaut. Vous devez être le contributeur aux données Blob de stockage du système de fichiers Data Lake Storage Gen2 que vous utilisez.
- Pool Spark dans votre espace de travail Azure Synapse Analytics. Pour plus d’informations, consultez Créer un pool Spark dans Azure Synapse.
Connectez-vous au portail Azure.
Connectez-vous au portail Azure.
Créez des services liés
Dans Azure Synapse Analytics, un service lié vous permet de définir vos informations de connexion à d’autres services. Dans cette section, vous allez ajouter un service lié Azure Synapse Analytics et Azure Data Lake Storage Gen2.
Ouvrez Azure Synapse Studio et sélectionnez l’onglet Gérer.
Sous Connexions externes, sélectionnez Services liés.
Pour ajouter un service lié, sélectionnez Nouveau.
Sélectionnez la vignette Azure Data Lake Storage Gen2 dans la liste, puis sélectionnez Continuer.
Entrez vos informations d’identification d’authentification. La clé de compte est le type d’authentification pris en charge. Sélectionnez Tester la connexion pour vérifier si vos informations d’identification sont correctes. Sélectionnez Create (Créer).
Important
- Si le service lié créé ci-dessus pour Azure Data Lake Storage Gen2 utilise un point de terminaison privé managé (avec un URI dfs), nous devons créer un autre point de terminaison privé managé secondaire en utilisant l’option Stockage Blob Azure (avec un URI d’objet blob) pour veiller à ce que le code fsspec/adlfs interne puisse se connecter à l’aide de l’interface BlobServiceClient.
- Si le point de terminaison privé managé secondaire n’est pas configuré correctement, un message d’erreur tel que ServiceRequestError : Impossible de se connecter à l’hôte [storageaccountname].blob.core.windows.net:443 ssl:True [Nom ou service inconnu] s’affiche
Lire/écrire des données à l’aide du nom et de la clé du compte de stockage
FSSPEC peut lire/écrire des données ADLS en spécifiant directement le nom et la clé du compte de stockage.
Dans Synapse studio, ouvrez Données>Lié>Azure Data Lake Storage Gen2. Chargez les données vers le compte de stockage par défaut.
Exécutez le code suivant.
Notes
Mettez à jour l’URL du fichier ainsi que le nom et la clé du compte de stockage ADLS Gen2 dans ce script avant de l’exécuter.
# To read data import fsspec import pandas adls_account_name = '' #Provide exact ADLS account name adls_account_key = '' #Provide exact ADLS account key fsspec_handle = fsspec.open('abfs[s]://<container>/<path-to-file>', account_name=adls_account_name, account_key=adls_account_key) with fsspec_handle.open() as f: df = pandas.read_csv(f) # To write data import fsspec import pandas adls_account_name = '' #Provide exact ADLS account name adls_account_key = '' #Provide exact ADLS account key data = pandas.DataFrame({'Name':['Tom', 'nick', 'krish', 'jack'], 'Age':[20, 21, 19, 18]}) fsspec_handle = fsspec.open('abfs[s]://<container>/<path-to-file>', account_name=adls_account_name, account_key=adls_account_key, mode="wt") with fsspec_handle.open() as f: data.to_csv(f)
Lire/écrire des données à l’aide du service lié
FSSPEC peut lire/écrire des données ADLS en spécifiant le nom du service lié.
Dans Synapse studio, ouvrez Données>Lié>Azure Data Lake Storage Gen2. Chargez les données vers le compte de stockage par défaut.
Exécutez le code suivant.
Notes
Mettez à jour l’URL du fichier, le nom du service lié ainsi que le nom du compte de stockage ADLS Gen2 dans ce script avant de l’exécuter.
# To read data import fsspec import pandas linked_service_name = '' #Provide exact Linked Service Name fsspec_handle = fsspec.open('abfs[s]://<container>/<path-to-file>', storage_options={'linked_service': linked_service_name}) with fsspec_handle.open() as f: df = pandas.read_csv(f) # To write data import fsspec import pandas linked_service_name = '' #Provide exact Linked Service Name data = pandas.DataFrame({'Name':['Tom', 'nick', 'krish', 'jack'], 'Age':[20, 21, 19, 18]}) fsspec_handle = fsspec.open('abfs[s]://<container>/<path-to-file>', storage_options={'linked_service': linked_service_name}, mode="wt") with fsspec_handle.open() as f: data.to_csv(f)
Charger le fichier du système de fichiers local vers le compte de stockage ADLS par défaut de l’espace de travail Synapse
FSSPEC peut charger un fichier à partir du système de fichiers local vers un compte de stockage ADLS par défaut de l’espace de travail Synapse.
Exécutez le code suivant.
Notes
Mettez à jour l’URL du fichier dans ce script avant de l’exécuter.
# Import libraries
import fsspec
import os
# Set variables
local_file_name = "<local_file_name>"
ADLS_Store_Path = "abfs[s]://<filesystemname>@<account name>.dfs.windows.core.net/"+local_file_name
# Generate local file for testing
with open(local_file_name, mode='w') as f:
for i in range(1000):
f.write("Testing local file functionality\n")
print("Created: " + local_file_name)
# Upload local file to ADLS
fs = fsspec.filesystem('abfs[s]')
fs.upload(local_file_name, ADLS_Store_Path)