Azure DataLake-serviceclientbibliotheek voor Python - versie 12.14.0
Overzicht
Dit preview-pakket voor Python bevat ADLS Gen2-specifieke API-ondersteuning die beschikbaar wordt gesteld in de Storage SDK. Dit omvat:
- Nieuwe bewerkingen op directoryniveau (Maken, Naam wijzigen, Verwijderen) voor opslagaccount met hiërarchische naamruimte (HNS). Voor accounts waarvoor HNS is ingeschakeld, zijn de bewerkingen voor hernoemen/verplaatsen atomisch.
- Machtigingsgerelateerde bewerkingen (ACL's ophalen/instellen) voor HNS-accounts (hiërarchische naamruimte ingeschakeld).
Broncode | Pakket (PyPi) | Pakket (Conda) | API-referentiedocumentatie | Productdocumentatie | Monsters
Aan de slag
Vereisten
- Python 3.7 of hoger is vereist voor het gebruik van dit pakket. Lees onze pagina over ondersteuningsbeleid voor Azure SDK voor Python-versies voor meer informatie.
- U moet een Azure-abonnement en een Azure-opslagaccount hebben om dit pakket te kunnen gebruiken.
Het pakket installeren
Installeer de Azure DataLake Storage-clientbibliotheek voor Python met pip:
pip install azure-storage-file-datalake --pre
Create a storage account
Als u een nieuw opslagaccount wilt maken, kunt u Azure Portal, Azure PowerShell of Azure CLI gebruiken:
# 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
De client verifiëren
Interactie met DataLake Storage begint met een exemplaar van de klasse DataLakeServiceClient. U hebt een bestaand opslagaccount, de URL en een referentie nodig om het clientobject te instantiëren.
Referenties ophalen
Als u de client wilt verifiëren, hebt u een aantal opties:
- Een SAS-tokentekenreeks gebruiken
- Een gedeelde toegangssleutel voor een account gebruiken
- Een tokenreferentie van azure.identity gebruiken
U kunt zich ook verifiëren met een opslag-verbindingsreeks met behulp van de from_connection_string
-methode. Zie voorbeeld: Client maken met een verbindingsreeks.
U kunt de referentie weglaten als uw account-URL al een SAS-token heeft.
Client maken
Zodra u de account-URL en referenties bij de hand hebt, kunt u de DataLakeServiceClient maken:
from azure.storage.filedatalake import DataLakeServiceClient
service = DataLakeServiceClient(account_url="https://<my-storage-account-name>.dfs.core.windows.net/", credential=credential)
Belangrijkste concepten
DataLake Storage biedt vier typen resources:
- Het opslagaccount
- Een bestandssysteem in het opslagaccount
- Een map onder het bestandssysteem
- Een bestand in een bestandssysteem of onder de map
Asynchrone clients
Deze bibliotheek bevat een volledige asynchrone API die wordt ondersteund in Python 3.5+. Als u deze wilt gebruiken, moet u eerst een asynchroon transport installeren, zoals aiohttp. Zie azure-core-documentatie voor meer informatie.
Asynchrone clients en referenties moeten worden gesloten wanneer ze niet meer nodig zijn. Deze objecten zijn asynchrone contextbeheerders en definiëren asynchrone close
methoden.
Clients
De DataLake Storage SDK biedt vier verschillende clients voor interactie met de DataLake-service:
- DataLakeServiceClient : deze client communiceert met de DataLake-service op accountniveau.
Het biedt bewerkingen voor het ophalen en configureren van de accounteigenschappen, evenals het weergeven, maken en verwijderen van bestandssystemen binnen het account.
Voor bewerkingen die betrekking hebben op een specifiek bestandssysteem, een specifieke map of een specifiek bestand, kunnen clients voor deze entiteiten ook worden opgehaald met behulp van de
get_file_client
functies ,get_directory_client
ofget_file_system_client
. - FileSystemClient : deze client vertegenwoordigt interactie met een specifiek bestandssysteem, zelfs als dat bestandssysteem nog niet bestaat. Het biedt bewerkingen voor het maken, verwijderen of configureren van bestandssystemen en bevat bewerkingen voor het weergeven van paden onder het bestandssysteem, het uploaden en verwijderen van bestanden of mappen in het bestandssysteem.
Voor bewerkingen met betrekking tot een specifiek bestand kan de client ook worden opgehaald met behulp van de
get_file_client
functie . Voor bewerkingen die betrekking hebben op een specifieke map, kan de client worden opgehaald met behulp van deget_directory_client
functie. - DataLakeDirectoryClient - deze client vertegenwoordigt interactie met een specifieke map, zelfs als die map nog niet bestaat. Het biedt bewerkingen voor maken, verwijderen, hernoemen, eigenschappen ophalen en eigenschappen instellen bewerkingen.
- DataLakeFileClient - deze client vertegenwoordigt interactie met een specifiek bestand, zelfs als dat bestand nog niet bestaat. Het biedt bestandsbewerkingen voor het toevoegen van gegevens, het leegmaken van gegevens, het verwijderen, maken en lezen van bestanden.
- DataLakeLeaseClient - deze client vertegenwoordigt lease-interacties met een FileSystemClient, DataLakeDirectoryClient of DataLakeFileClient. Het biedt bewerkingen voor het verkrijgen, vernieuwen, vrijgeven, wijzigen en verbreken van leases voor de resources.
Voorbeelden
De volgende secties bevatten verschillende codefragmenten voor enkele van de meest voorkomende Storage DataLake-taken, waaronder:
Client maken met een verbindingsreeks
Maak de DataLakeServiceClient met behulp van de verbindingsreeks naar uw Azure Storage-account.
from azure.storage.filedatalake import DataLakeServiceClient
service = DataLakeServiceClient.from_connection_string(conn_str="my_connection_string")
Een bestand uploaden
Upload een bestand naar uw bestandssysteem.
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))
Een bestand downloaden
Download een bestand uit uw bestandssysteem.
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)
Paden opsommen
Maak een lijst met de paden in uw bestandssysteem.
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')
Optionele configuratie
Optionele trefwoordargumenten die kunnen worden doorgegeven op het niveau van de client en per bewerking.
Configuratie van beleid voor opnieuw proberen
Gebruik de volgende trefwoordargumenten bij het instantiëren van een client om het beleid voor opnieuw proberen te configureren:
- retry_total (int): het totale aantal nieuwe pogingen dat moet worden toegestaan. Heeft voorrang op andere aantallen.
Geef door
retry_total=0
als u aanvragen niet opnieuw wilt proberen. De standaardwaarde is 10. - retry_connect (int): hoeveel verbindingsfouten u opnieuw wilt proberen. Standaardwaarde is 3.
- retry_read (int): hoe vaak moet u het opnieuw proberen bij leesfouten. Standaardwaarde is 3.
- retry_status (int): hoe vaak moet u ongeldige statuscodes opnieuw proberen. Standaardwaarde is 3.
- retry_to_secondary (bool): of de aanvraag opnieuw moet worden geprobeerd naar secundaire, indien mogelijk.
Dit mag alleen worden ingeschakeld als RA-GRS-accounts worden gebruikt en mogelijk verouderde gegevens kunnen worden verwerkt.
De standaardwaarde is
False
.
Andere client/configuratie per bewerking
Andere optionele trefwoordargumenten voor configuratie die kunnen worden opgegeven op de client of per bewerking.
Argumenten voor clientwoorden:
- connection_timeout (int): het aantal seconden dat de client wacht om verbinding te maken met de server. De standaardwaarde is 20 seconden.
- read_timeout (int): het aantal seconden dat de client tussen opeenvolgende leesbewerkingen wacht op een antwoord van de server. Dit is een time-out op socketniveau en wordt niet beïnvloed door de totale gegevensgrootte. Time-outs voor lezen aan de clientzijde worden automatisch opnieuw geprobeerd. De standaardwaarde is 60 seconden.
- transport (alle): door de gebruiker opgegeven transport om de HTTP-aanvraag te verzenden.
Trefwoordargumenten per bewerking:
- raw_response_hook (aanroepbaar): de opgegeven callback maakt gebruik van het antwoord dat is geretourneerd door de service.
- raw_request_hook (aanroepbaar): de opgegeven callback maakt gebruik van de aanvraag voordat deze naar de service wordt verzonden.
- client_request_id (str): optioneel door de gebruiker opgegeven identificatie van de aanvraag.
- user_agent (str): voegt de aangepaste waarde toe aan de header user-agent die met de aanvraag moet worden verzonden.
- logging_enable (bool): hiermee schakelt u logboekregistratie in op het niveau VAN FOUTOPSPORING. Standaard ingesteld op False. Kan ook worden doorgegeven op clientniveau om deze in te schakelen voor alle aanvragen.
- logging_body (bool): hiermee schakelt u logboekregistratie van de aanvraag- en antwoordtekst in. Standaard ingesteld op False. Kan ook worden doorgegeven op clientniveau om deze in te schakelen voor alle aanvragen.
- headers (dict): geef aangepaste headers door als sleutel, waardeparen. Bijvoorbeeld.
headers={'CustomValue': value}
Problemen oplossen
Algemeen
DataLake Storage-clients genereren uitzonderingen die zijn gedefinieerd in Azure Core.
Deze lijst kan worden gebruikt ter referentie om opgetreden uitzonderingen te ondervangen. Als u de specifieke foutcode van de uitzondering wilt ophalen, gebruikt u het error_code
kenmerk, dat wil zeggen exception.error_code
.
Logboekregistratie
Deze bibliotheek maakt gebruik van de standaardbibliotheek voor logboekregistratie voor logboekregistratie. Basisinformatie over HTTP-sessies (URL's, headers, enzovoort) wordt geregistreerd op INFO-niveau.
Gedetailleerde logboekregistratie op foutopsporingsniveau, inclusief aanvraag-/antwoordteksten en niet-bewerkte headers, kan worden ingeschakeld op een client met het logging_enable
argument:
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)
Op dezelfde manier kan logging_enable
logboekregistratie voor één bewerking inschakelen, zelfs wanneer dit niet is ingeschakeld voor de client:
service_client.list_file_systems(logging_enable=True)
Volgende stappen
Meer voorbeeldcode
Ga aan de slag met onze Azure DataLake-voorbeelden.
Er zijn verschillende Python SDK-voorbeelden voor DataLake Storage beschikbaar in de GitHub-opslagplaats van de SDK. Deze voorbeelden bevatten voorbeeldcode voor aanvullende scenario's die vaak voorkomen tijdens het werken met DataLake Storage:
datalake_samples_access_control.py
- Voorbeelden voor algemene DataLake Storage-taken:- Een bestandssysteem instellen
- Een map maken
- Toegangsbeheer voor de map instellen/ophalen
- Bestanden maken in de map
- Toegangsbeheer instellen/ophalen voor elk bestand
- Bestandssysteem verwijderen
datalake_samples_upload_download.py
- Voorbeelden voor algemene DataLake Storage-taken:- Een bestandssysteem instellen
- Bestand maken
- Gegevens toevoegen aan het bestand
- Gegevens naar het bestand leegmaken
- De geüploade gegevens downloaden
- Bestandssysteem verwijderen
Aanvullende documentatie
Tabel voor API-toewijzing van ADLS Gen1 naar ADLS Gen2 Zie de Data Lake Storage Gen2 documentatie over docs.microsoft.com voor uitgebreidere REST-documentatie over Data Lake Storage Gen2.
Bijdragen
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.
Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.
Azure SDK for Python