Pular para o conteúdo principal

Conectar-se ao armazenamento Azure Blob com WASB (legado)

Microsoft descontinuou o driver Windows Azure Storage Blob (WASB) para Azure Blob Storage em favor do driver Azure Blob Filesystem (ABFS); consulte Conectar-se a Azure Data Lake Storage Gen2 e Blob Storage. O ABFS tem várias vantagens em relação ao WASB; consulte a documentação do Azure sobre o ABFS.

Este artigo fornece documentação para a manutenção do código que usa o driver WASB. A Databricks recomenda o uso do ABFS para todas as conexões com o Azure Blob Storage.

Configurar as credenciais WASB no Databricks

O driver WASB permite que o senhor use um armazenamento account access key ou uma assinatura de acesso compartilhado (SAS). (Se o senhor estiver lendo dados de um armazenamento público account, não precisará configurar as credenciais).

A Databricks recomenda o uso de segredos sempre que o senhor precisar passar credenciais na Databricks. Os segredos estão disponíveis para todos os usuários com acesso ao escopo do segredo que os contém.

Você pode passar as credenciais:

  • Com escopo para o clustering na configuração Spark
  • Com escopo para o Notebook
  • Anexado a um diretório montado

A Databricks recomenda atualizar todas as suas conexões para usar o ABFS para acessar o Azure Blob Storage, que fornece padrões de acesso semelhantes aos do WASB. Use o ABFS para obter a melhor segurança e desempenho ao interagir com o Azure Blob Storage.

Para configurar as credenciais de clustering, defina as propriedades de configuração doSpark quando o senhor criar o clustering. As credenciais definidas no nível do clustering estão disponíveis para todos os usuários com acesso a esse clustering.

Para configurar credenciais com escopo de Notebook, use spark.conf.set(). As credenciais passadas no nível do Notebook estão disponíveis para todos os usuários com acesso a esse Notebook.

Definir as credenciais do Azure Blob Storage com um acesso account key

Um acesso ao storage account key concede acesso total a todos os contêineres de um storage account. Embora esse padrão seja útil para prototipagem, evite usá-lo na produção para reduzir os riscos associados à concessão de acesso irrestrito aos dados de produção.

Python
spark.conf.set(
"fs.azure.account.key.<storage-account-name>.blob.core.windows.net",
"<storage-account-access-key>"
)

O senhor pode atualizar o site account key URIs para usar o ABFS. Para obter mais informações, consulte Conectar-se a Azure Data Lake Storage Gen2 e Blob Storage.

Definição de credenciais de armazenamento Azure Blob com uma assinatura de acesso compartilhado (SAS)

O senhor pode usar o SAS tokens para configurar o acesso limitado a um único contêiner em um armazenamento account que expira em um horário específico.

Python
spark.conf.set(
"fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net",
"<sas-token-for-container>"
)

Acesse o Azure Blob Storage usando o DataFrame API

O Apache Spark DataFrame API pode usar credenciais configuradas no nível do Notebook ou do clustering. Todos os URIs do driver WASB especificam os nomes do contêiner e do armazenamento account. O nome do diretório é opcional e pode especificar vários diretórios aninhados em relação ao contêiner.

wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>

Os exemplos de código a seguir mostram como o senhor pode usar a DataFrames API Databricks dbutilsreferência e utilidades () para interagir com um diretório nomeado em um contêiner.

Python
df = spark.read.format("parquet").load("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")

dbutils.fs.ls("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")

Para atualizar o ABFS em vez do WASB, atualize seus URIs. Para obter mais informações, consulte Access Azure storage

Acesse Azure Blob Storage com SQL

As credenciais definidas na configuração da sessão de um Notebook não podem ser acessadas pelo Notebook que está executando Spark SQL.

Depois que um acesso account key ou um SAS for definido na configuração de cluster, o senhor poderá usar consultas padrão Spark SQL com o Azure Blob Storage:

SQL
-- SQL
CREATE DATABASE <db-name>
LOCATION "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/";

Para atualizar o ABFS em vez do WASB, atualize seus URIs; consulte Acessar o armazenamento do Azure

Montar contêineres do Azure Blob Storage no DBFS

O senhor pode montar um contêiner do Azure Blob Storage ou uma pasta dentro de um contêiner no DBFS. Para obter recomendações da Databricks, consulte Montagem de armazenamento de objetos em nuvem na Databricks.

important
  • O armazenamento do Azure Blob oferece suporte a três tipos de blob: bloco, anexo e página. O senhor só pode montar blobs de bloco no DBFS.
  • Todos os usuários têm acesso de leitura e gravação aos objetos nos contêineres de armazenamento Blob montados no DBFS.
  • Depois que um ponto de montagem é criado por meio de um cluster, os usuários podem acessá-lo imediatamente. Para usar o ponto de montagem em outro cluster em execução, você deve executar dbutils.fs.refreshMounts() nesse cluster em execução para disponibilizar o ponto de montagem recém-criado.

O DBFS usa a credencial que o senhor forneceu ao criar o ponto de montagem para acessar o contêiner de armazenamento Blob montado. Se um contêiner de armazenamento Blob for montado usando um armazenamento account acesse key, DBFS use o SAS temporário tokens derivado do armazenamento account key quando acessar esse ponto de montagem.

Monte um contêiner de armazenamento Azure Blob

A Databricks recomenda o uso do ABFS em vez do WASB. Para obter mais informações sobre a montagem com ABFS, consulte: Montagem de ADLS Gen2 ou Blob Storage com ABFS.

  1. Para montar um contêiner de armazenamento Blob ou uma pasta dentro de um contêiner, use o seguinte comando:
Python
dbutils.fs.mount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

onde

  • <storage-account-name> é o nome do seu armazenamento Azure Blob account.
  • <container-name> é o nome de um contêiner no seu armazenamento Azure Blob account.
  • <mount-name> é um caminho DBFS que representa onde o contêiner de armazenamento Blob ou uma pasta dentro do contêiner (especificado em source) será montado no DBFS.
  • <conf-key> pode ser fs.azure.account.key.<storage-account-name>.blob.core.windows.net ou fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net
  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>") obtém o endereço key que foi armazenado como segredo em um escopo secreto.
  1. Acesse os arquivos em seu contêiner como se fossem arquivos locais, por exemplo:
Python
# python
df = spark.read.format("text").load("/mnt/<mount-name>/...")
df = spark.read.format("text").load("dbfs:/<mount-name>/...")