Libreria client del servizio Azure DataLake per Python - versione 12.14.0
Panoramica
Questo pacchetto di anteprima per Python include il supporto api specifico di ADLS Gen2 reso disponibile in Storage SDK. ad esempio:
- Nuove operazioni a livello di directory (Crea, Rinomina, Elimina) per l'account di archiviazione abilitato per lo spazio dei nomi gerarchico (HNS). Per gli account abilitati per HNS, le operazioni di rinomina/spostamento sono atomiche.
- Operazioni correlate alle autorizzazioni (Get/Set ACL) per gli account dello spazio dei nomi gerarchici abilitati (HNS).
Codice | sorgentePacchetto (PyPi) | Pacchetto (Conda) | Documentazione di | riferimento sulle APIDocumentazione | del prodottoCampioni
Introduzione
Prerequisiti
- Python 3.7 o versione successiva è necessario per usare questo pacchetto. Per altre informazioni, leggere la pagina relativa ai criteri di supporto della versione di Azure SDK per Python.
- È necessario disporre di una sottoscrizione di Azure e di un account di archiviazione di Azure per usare questo pacchetto.
Installare il pacchetto
Installare la libreria client di Archiviazione di Azure DataLake per Python con pip:
pip install azure-storage-file-datalake --pre
Creare un account di archiviazione
Se si vuole creare un nuovo account di archiviazione, è possibile usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure:
# Create a new resource group to hold the storage account -
# if using an existing resource group, skip this step
az group create --name my-resource-group --location westus2
# Install the extension 'Storage-Preview'
az extension add --name storage-preview
# Create the storage account
az storage account create --name my-storage-account-name --resource-group my-resource-group --sku Standard_LRS --kind StorageV2 --hierarchical-namespace true
Autenticare il client
L'interazione con DataLake Storage inizia con un'istanza della classe DataLakeServiceClient. È necessario un account di archiviazione esistente, il relativo URL e una credenziale per creare un'istanza dell'oggetto client.
Ottenere le credenziali
Per autenticare il client sono disponibili alcune opzioni:
- Usare una stringa di token di firma di accesso condiviso
- Usare una chiave di accesso condiviso dell'account
- Usare una credenziale del token da azure.identity
In alternativa, è possibile eseguire l'autenticazione con un stringa di connessione di archiviazione usando il from_connection_string
metodo . Vedere l'esempio: Creazione client con un stringa di connessione.
È possibile omettere le credenziali se l'URL dell'account ha già un token di firma di accesso condiviso.
Creare il client
Dopo aver pronto l'URL e le credenziali dell'account, è possibile creare DataLakeServiceClient:
from azure.storage.filedatalake import DataLakeServiceClient
service = DataLakeServiceClient(account_url="https://<my-storage-account-name>.dfs.core.windows.net/", credential=credential)
Concetti chiave
L'archiviazione DataLake offre quattro tipi di risorse:
- L'account di archiviazione
- File system nell'account di archiviazione
- Directory nel file system
- File in un file system o nella directory
Client asincroni
Questa libreria include un'API asincrona completa supportata in Python 3.5+. Per usarlo, è prima necessario installare un trasporto asincrono, ad esempio aiohttp. Per altre informazioni, vedere la documentazione di azure-core .
I client e le credenziali asincroni devono essere chiusi quando non sono più necessari. Questi oggetti sono gestioni contesto asincrone e definiscono metodi asincroni close
.
Client
DataLake Storage SDK offre quattro client diversi per interagire con il servizio DataLake:
- DataLakeServiceClient : questo client interagisce con il servizio DataLake a livello di account.
Fornisce operazioni per recuperare e configurare le proprietà dell'account e l'elenco, creare ed eliminare file system all'interno dell'account.
Per le operazioni relative a un file system, una directory o un file specifico, i client per tali entità possono essere recuperati anche usando le
get_file_client
get_directory_client
funzioni oget_file_system_client
. - FileSystemClient : questo client rappresenta l'interazione con un file system specifico, anche se tale file system non esiste ancora. Fornisce operazioni per creare, eliminare o configurare file system e include operazioni per elencare i percorsi nel file system, caricare ed eliminare file o directory nel file system.
Per le operazioni relative a un file specifico, è anche possibile recuperare il client usando la
get_file_client
funzione. Per le operazioni relative a una directory specifica, è possibile recuperare il client usando laget_directory_client
funzione. - DataLakeDirectoryClient : questo client rappresenta l'interazione con una directory specifica, anche se tale directory non esiste ancora. Fornisce operazioni di directory create, delete, rinomina, recupera proprietà e imposta le operazioni delle proprietà.
- DataLakeFileClient : questo client rappresenta l'interazione con un file specifico, anche se tale file non esiste ancora. Fornisce operazioni di file per aggiungere dati, scaricare dati, eliminare, creare e leggere file.
- DataLakeLeaseClient : questo client rappresenta le interazioni di lease con un FileSystemClient, DataLakeDirectoryClient o DataLakeFileClient. Fornisce operazioni per acquisire, rinnovare, rilasciare, modificare e interrompere i lease sulle risorse.
Esempio
Le sezioni seguenti forniscono diversi frammenti di codice che coprono alcune delle attività di Storage DataLake più comuni, tra cui:
- Creazione client con un stringa di connessione
- Caricamento di un file
- Download di un file
- Enumerazione dei percorsi
Creazione client con un stringa di connessione
Creare DataLakeServiceClient usando l'stringa di connessione all'account di archiviazione di Azure.
from azure.storage.filedatalake import DataLakeServiceClient
service = DataLakeServiceClient.from_connection_string(conn_str="my_connection_string")
Caricamento di un file
Caricare un file nel file system.
from azure.storage.filedatalake import DataLakeFileClient
data = b"abc"
file = DataLakeFileClient.from_connection_string("my_connection_string",
file_system_name="myfilesystem", file_path="myfile")
file.create_file ()
file.append_data(data, offset=0, length=len(data))
file.flush_data(len(data))
Download di un file
Scaricare un file dal file system.
from azure.storage.filedatalake import DataLakeFileClient
file = DataLakeFileClient.from_connection_string("my_connection_string",
file_system_name="myfilesystem", file_path="myfile")
with open("./BlockDestination.txt", "wb") as my_file:
download = file.download_file()
download.readinto(my_file)
Enumerazione dei percorsi
Elencare i percorsi nel file system.
from azure.storage.filedatalake import FileSystemClient
file_system = FileSystemClient.from_connection_string("my_connection_string", file_system_name="myfilesystem")
paths = file_system.get_paths()
for path in paths:
print(path.name + '\n')
Configurazione facoltativa
Argomenti delle parole chiave facoltativi che possono essere passati al client e a livello di operazione.
Configurazione dei criteri di ripetizione dei tentativi
Usare gli argomenti delle parole chiave seguenti quando si crea un'istanza di un client per configurare i criteri di ripetizione dei tentativi:
- retry_total (int): numero totale di tentativi da consentire. Ha la precedenza su altri conteggi.
retry_total=0
Passare se non si vuole ripetere i tentativi sulle richieste. Il valore predefinito è 10. - retry_connect (int): numero di errori correlati alla connessione da ripetere. Il valore predefinito è 3.
- retry_read (int): numero di tentativi di ripetizione degli errori di lettura. Il valore predefinito è 3.
- retry_status (int): quante volte ripetere i tentativi sui codici di stato non valido. Il valore predefinito è 3.
- retry_to_secondary (bool): se la richiesta deve essere riprovata a secondaria, se in grado.
Questa opzione deve essere abilitata solo per gli account RA-GRS e i dati potenzialmente non aggiornati possono essere gestiti.
Il valore predefinito è
False
.
Altro client/configurazione per operazione
Altri argomenti delle parole chiave di configurazione facoltativi che possono essere specificati nel client o per operazione.
Argomenti delle parole chiave client:
- connection_timeout (int): il numero di secondi che il client attenderà di stabilire una connessione al server. Il valore predefinito è 20 secondi.
- read_timeout (int): il numero di secondi che il client attenderà, tra operazioni di lettura consecutive, per una risposta dal server. Si tratta di un timeout a livello di socket e non è interessato dalle dimensioni complessive dei dati. I timeout di lettura lato client verranno ritriti automaticamente. Il valore predefinito è 60 secondi.
- transport (Any): trasporto fornito dall'utente per inviare la richiesta HTTP.
Argomenti delle parole chiave per operazione:
- raw_response_hook (chiamabile): il callback specificato usa la risposta restituita dal servizio.
- raw_request_hook (chiamabile): il callback specificato usa la richiesta prima di essere inviata al servizio.
- client_request_id (str): utente facoltativo specificato per l'identificazione della richiesta.
- user_agent (str): aggiunge il valore personalizzato all'intestazione dell'agente utente da inviare con la richiesta.
- logging_enable (bool): abilita la registrazione a livello DI DEBUG. Il valore predefinito è False. Può essere passato anche a livello client per abilitarlo per tutte le richieste.
- logging_body (bool): abilita la registrazione del corpo della richiesta e della risposta. Il valore predefinito è False. Può essere passato anche a livello client per abilitarlo per tutte le richieste.
- intestazioni (dict): passare intestazioni personalizzate come chiave, coppie di valori. Ad esempio
headers={'CustomValue': value}
Risoluzione dei problemi
Generale
I client di Archiviazione DataLake generano eccezioni definite in Azure Core.
Questo elenco può essere usato per riferimento per rilevare le eccezioni generate. Per ottenere il codice di errore specifico dell'eccezione, usare l'attributo error_code
, ad esempio exception.error_code
.
Registrazione
Questa libreria usa la libreria di registrazione standard per la registrazione. Le informazioni di base sulle sessioni HTTP (URL, intestazioni e così via) vengono registrate a livello di INFO.
La registrazione dettagliata del livello DEBUG, inclusi i corpi di richiesta/risposta e le intestazioni non attendibili, può essere abilitata in un client con l'argomento logging_enable
:
import sys
import logging
from azure.storage.filedatalake import DataLakeServiceClient
# Create a logger for the 'azure.storage.filedatalake' SDK
logger = logging.getLogger('azure.storage')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
# This client will log detailed information about its HTTP sessions, at DEBUG level
service_client = DataLakeServiceClient.from_connection_string("your_connection_string", logging_enable=True)
Analogamente, logging_enable
può abilitare la registrazione dettagliata per una singola operazione, anche quando non è abilitata per il client:
service_client.list_file_systems(logging_enable=True)
Passaggi successivi
Altro codice di esempio
Introduzione agli esempi di Azure DataLake.
Diversi esempi di Python SDK di Archiviazione DataLake sono disponibili nel repository GitHub dell'SDK. Questi esempi forniscono codice di esempio per scenari aggiuntivi comunemente rilevati durante l'uso di DataLake Storage:
datalake_samples_access_control.py
- Esempi per le attività comuni di archiviazione di DataLake:- Configurare un file system
- Creare una directory
- Impostare/Ottenere il controllo di accesso per la directory
- Creare file nella directory
- Impostare/Ottenere il controllo di accesso per ogni file
- Eliminare il file system
datalake_samples_upload_download.py
- Esempi per le attività comuni di archiviazione di DataLake:- Configurare un file system
- Crea file
- Aggiungere dati al file
- Scaricare i dati nel file
- Scaricare i dati caricati
- Eliminare il file system
Documentazione aggiuntiva
Tabella per ADLS Gen1 a MAPPING API ADLS Gen2 Per una documentazione REST più completa su Data Lake Storage Gen2, vedere la documentazione di Data Lake Storage Gen2 su docs.microsoft.com.
Contributo
In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.
Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.
Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.
Azure SDK for Python