Biblioteca de clientes de serviço do Azure DataLake para Python – versão 12.14.0
Visão geral
Este pacote de visualização para Python inclui suporte específico à API do ADLS Gen2 disponibilizado no SDK de Armazenamento. Isso inclui:
- Novas operações de nível de diretório (Criar, Renomear, Excluir) para conta de armazenamento HNS (namespace hierárquico habilitado). Para contas habilitadas para HNS, as operações de renomeação/movimentação são atômicas.
- Operações relacionadas à permissão (ACLs Get/Set) para contas HNS (namespace hierárquicas habilitadas).
Código-fonte | Pacote (PyPi) | Pacote (Conda) | Documentação | de referência da APIDocumentação do produto | Amostras
Introdução
Pré-requisitos
- É necessário ter o Python 3.7 ou posterior para usar esse pacote. Para obter mais detalhes, leia nossa página na política de suporte do SDK do Azure para Python.
- Você deve ter uma assinatura do Azure e uma conta de armazenamento do Azure para usar esse pacote.
Instalar o pacote
Instale a biblioteca de clientes do Armazenamento do Azure DataLake para Python com pip:
pip install azure-storage-file-datalake --pre
Criar uma conta de armazenamento
Se você quiser criar uma nova conta de armazenamento, poderá usar o Portal do Azure, Azure PowerShell ou a CLI do 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
Autenticar o cliente
A interação com o Armazenamento DataLake começa com uma instância da classe DataLakeServiceClient. Você precisa de uma conta de armazenamento existente, sua URL e uma credencial para instanciar o objeto cliente.
Obter credenciais
Para autenticar o cliente, você tem algumas opções:
- Usar uma cadeia de caracteres de token SAS
- Usar uma chave de acesso compartilhado da conta
- Usar uma credencial de token do azure.identity
Como alternativa, você pode autenticar com uma cadeia de conexão de armazenamento usando o from_connection_string
método . Veja o exemplo: criação de cliente com um cadeia de conexão.
Você pode omitir a credencial se a URL da sua conta já tiver um token SAS.
Criar cliente
Depois de ter a URL da conta e as credenciais prontas, você poderá criar o DataLakeServiceClient:
from azure.storage.filedatalake import DataLakeServiceClient
service = DataLakeServiceClient(account_url="https://<my-storage-account-name>.dfs.core.windows.net/", credential=credential)
Principais conceitos
O armazenamento DataLake oferece quatro tipos de recursos:
- A conta de armazenamento
- Um sistema de arquivos na conta de armazenamento
- Um diretório no sistema de arquivos
- Um arquivo em um sistema de arquivos ou em diretório
Clientes assíncronos
Essa biblioteca inclui uma API assíncrona completa com suporte no Python 3.5+. Para usá-lo, primeiro você deve instalar um transporte assíncrono, como aiohttp. Confira a documentação do azure-core para obter mais informações.
Clientes e credenciais assíncronos devem ser fechados quando não forem mais necessários. Esses objetos são gerenciadores de contexto assíncronos e definem métodos assíncronos close
.
Clientes
O SDK de Armazenamento datalake fornece quatro clientes diferentes para interagir com o Serviço DataLake:
- DataLakeServiceClient – esse cliente interage com o Serviço DataLake no nível da conta.
Ele fornece operações para recuperar e configurar as propriedades da conta, bem como listar, criar e excluir sistemas de arquivos dentro da conta.
Para operações relacionadas a um sistema de arquivos específico, diretório ou arquivo, os clientes dessas entidades também podem ser recuperados usando as
get_file_client
funções ouget_file_system_client
get_directory_client
. - FileSystemClient – esse cliente representa a interação com um sistema de arquivos específico, mesmo que esse sistema de arquivos ainda não exista. Ele fornece operações para criar, excluir ou configurar sistemas de arquivos e inclui operações para listar caminhos em sistema de arquivos, carregar e excluir arquivo ou diretório no sistema de arquivos.
Para operações relacionadas a um arquivo específico, o cliente também pode ser recuperado usando a
get_file_client
função . Para operações relacionadas a um diretório específico, o cliente pode ser recuperado usando aget_directory_client
função . - DataLakeDirectoryClient – esse cliente representa a interação com um diretório específico, mesmo que esse diretório ainda não exista. Ele fornece operações de diretório para criar, excluir, renomear, obter propriedades e definir operações de propriedades.
- DataLakeFileClient – esse cliente representa a interação com um arquivo específico, mesmo que esse arquivo ainda não exista. Ele fornece operações de arquivo para acrescentar dados, liberar dados, excluir, criar e ler arquivo.
- DataLakeLeaseClient – esse cliente representa interações de concessão com um FileSystemClient, DataLakeDirectoryClient ou DataLakeFileClient. Ele fornece operações para adquirir, renovar, liberar, alterar e interromper concessões nos recursos.
Exemplos
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas mais comuns do Storage DataLake, incluindo:
- Criação de cliente com um cadeia de conexão
- Carregar um arquivo
- Baixar um arquivo
- Enumerando caminhos
Criação de cliente com um cadeia de conexão
Crie o DataLakeServiceClient usando o cadeia de conexão para sua conta de Armazenamento do Azure.
from azure.storage.filedatalake import DataLakeServiceClient
service = DataLakeServiceClient.from_connection_string(conn_str="my_connection_string")
Carregar um arquivo
Carregue um arquivo no sistema de arquivos.
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))
Baixar um arquivo
Baixe um arquivo do sistema de arquivos.
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)
Enumerando caminhos
Liste os caminhos em seu sistema de arquivos.
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')
Configuração opcional
Argumentos opcionais palavra-chave que podem ser passados no nível do cliente e por operação.
Configuração da Política de Repetição
Use os seguintes argumentos palavra-chave ao instanciar um cliente para configurar a política de repetição:
- retry_total (int): número total de tentativas a serem permitidas. Tem precedência sobre outras contagens.
retry_total=0
Passe se você não quiser repetir as solicitações. O valor padrão é 10. - retry_connect (int): quantos erros relacionados à conexão tentar novamente. O valor padrão é 3.
- retry_read (int): quantas vezes tentar novamente em erros de leitura. O valor padrão é 3.
- retry_status (int): quantas vezes tentar novamente em códigos de status inválidos. O valor padrão é 3.
- retry_to_secondary (bool): se a solicitação deve ser repetida para secundária, se possível.
Isso só deve ser habilitado para que contas RA-GRS sejam usadas e dados potencialmente obsoletos possam ser tratados.
Assume o padrão de
False
.
Outra configuração de cliente/por operação
Outra configuração opcional palavra-chave argumentos que podem ser especificados no cliente ou por operação.
Argumentos de palavra-chave do cliente:
- connection_timeout (int): o número de segundos que o cliente aguardará para estabelecer uma conexão com o servidor. O padrão é 20 segundos.
- read_timeout (int): o número de segundos que o cliente aguardará, entre operações de leitura consecutivas, por uma resposta do servidor. Esse é um tempo limite de nível de soquete e não é afetado pelo tamanho geral dos dados. Os tempos limite de leitura do lado do cliente serão repetidos automaticamente. O padrão é 60 segundos.
- transport (Any): transporte fornecido pelo usuário para enviar a solicitação HTTP.
Argumentos de palavra-chave por operação:
- raw_response_hook (callable): o retorno de chamada especificado usa a resposta retornada do serviço.
- raw_request_hook (callable): o retorno de chamada determinado usa a solicitação antes de ser enviado ao serviço.
- client_request_id (str): identificação da solicitação especificada pelo usuário opcional.
- user_agent (str): acrescenta o valor personalizado ao cabeçalho user-agent a ser enviado com a solicitação.
- logging_enable (bool): habilita o registro em log no nível de DEBUG. Usa False como padrão. Também pode ser passado no nível do cliente para habilitá-lo para todas as solicitações.
- logging_body (bool): habilita o registro em log do corpo da solicitação e da resposta. Usa False como padrão. Também pode ser passado no nível do cliente para habilitá-lo para todas as solicitações.
- cabeçalhos (dict): passe cabeçalhos personalizados como pares chave e valor. Por exemplo,
headers={'CustomValue': value}
Solução de problemas
Geral
Os clientes de Armazenamento DataLake geram exceções definidas no Azure Core.
Essa lista pode ser usada para referência para capturar exceções geradas. Para obter o código de erro específico da exceção, use o error_code
atributo , ou seja, exception.error_code
.
Registro em log
Essa biblioteca usa a biblioteca de log padrão para registro em log. As informações básicas sobre sessões HTTP (URLs, cabeçalhos etc.) são registradas no nível info.
O log detalhado no nível de DEBUG, incluindo corpos de solicitação/resposta e cabeçalhos não redigidos, pode ser habilitado em um cliente com o logging_enable
argumento :
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)
Da mesma forma, logging_enable
pode habilitar o log detalhado para uma operação individual, mesmo quando ela não está habilitada para o cliente:
service_client.list_file_systems(logging_enable=True)
Próximas etapas
Mais códigos de exemplo
Introdução aos nossos exemplos do Azure DataLake.
Vários exemplos do SDK do Python de Armazenamento DataLake estão disponíveis para você no repositório GitHub do SDK. Esses exemplos fornecem código de exemplo para cenários adicionais comumente encontrados ao trabalhar com o Armazenamento DataLake:
datalake_samples_access_control.py
– Exemplos de tarefas comuns do Armazenamento DataLake:- Configurar um sistema de arquivos
- Criar um diretório
- Definir/Obter controle de acesso para o diretório
- Criar arquivos no diretório
- Definir/Obter controle de acesso para cada arquivo
- Excluir sistema de arquivos
datalake_samples_upload_download.py
– Exemplos de tarefas comuns do Armazenamento DataLake:- Configurar um sistema de arquivos
- Criar arquivo
- Acrescentar dados ao arquivo
- Liberar dados para o arquivo
- Baixar os dados carregados
- Excluir sistema de arquivos
Documentação adicional
Tabela para mapeamento de API do ADLS Gen1 para ADLS Gen2 Para obter uma documentação REST mais abrangente sobre Data Lake Storage Gen2, consulte a documentação do Data Lake Storage Gen2 sobre docs.microsoft.com.
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.
Azure SDK for Python