Você pode usar o pandas no Azure Databricks?

O Databricks Runtime inclui o pandas como um dos pacotes padrão de Python, permitindo que você crie e aproveite os DataFrames do pandas em notebooks e trabalhos do Databricks.

No Databricks Runtime 10.4 LTS e versões superiores, a API do Pandas no Spark fornece comandos familiares do pandas sobre o PySpark DataFrames. Você também pode converter DataFrames entre o pandas e o PySpark.

O Apache Spark inclui a execução otimizada pelo Arrow da lógica do Python na forma de APIs de função pandas, que permitem que os usuários apliquem transformações de pandas diretamente aos DataFrames do PySpark. O Apache Spark também dá suporte às UDFs do pandas, que usam otimizações do Arrow semelhantes às funções de usuário arbitrárias definidas no Python.

Onde o pandas armazena dados no Azure Databricks?

Você pode usar o pandas para armazenar dados em vários locais diferentes no Azure Databricks. Sua capacidade de armazenar e carregar dados de alguns locais depende das configurações definidas pelos administradores do workspace.

Observação

O Databricks recomenda armazenar dados de produção no armazenamento de objetos de nuvem. Veja Conectar-se ao Azure Data Lake Storage e ao Armazenamento de Blobs.

Se você estiver em um workspace habilitado para o Catálogo do Unity, poderá acessar o armazenamento em nuvem com locais externos. Confira a visão geral de locais externos.

Para exploração rápida e dados sem informações confidenciais, você pode salvar dados com segurança usando caminhos relativos ou o DBFS, como nos seguintes exemplos:

Observação

pandas usa caminhos no estilo POSIX, como /dbfs/..., e não pode ler caminhos dbfs:/... diretamente. Para ler um arquivo do DBFS com pandas em ambientes de computação que comportam FUSE do DBFS, substitua o esquema dbfs:/ por /dbfs/. Para ter suporte em todos os tipos de computação, use volumes do Unity Catalog ou arquivos do workspace. Veja o que são volumes do Catálogo do Unity? E preciso fornecer um esquema de URI para acessar dados?.

import pandas as pd

df = pd.DataFrame([["a", 1], ["b", 2], ["c", 3]])

df.to_csv("./relative_path_test.csv")
df.to_csv("/dbfs/tmp/dbfs_test.csv")
df.to_csv("/Volumes/my_catalog/my_schema/my_volume/volume_test.csv")

Você pode explorar arquivos gravados no DBFS com o %fs comando mágico:

%fs ls dbfs:/tmp

Quando você salva em um caminho relativo, o local do arquivo depende de onde você executa o código. Se você estiver usando um notebook do Databricks, o arquivo de dados será salvo no armazenamento de volume anexado ao driver do cluster. Os dados armazenados nesse local são excluídos permanentemente quando o cluster é encerrado. Se você estiver usando Pastas Git do Databricks com o suporte arbitrário de arquivo habilitado, os dados serão salvos na raiz do projeto atual. Em ambos os casos, você pode explorar os arquivos gravados usando o comando magic %sh, que permite operações bash simples em relação ao diretório raiz atual, como no seguinte exemplo:

%sh ls

Para obter mais informações sobre como o Azure Databricks armazena vários arquivos, consulte Trabalhar com arquivos no Azure Databricks.

Como você carrega dados com o pandas no Azure Databricks?

O Azure Databricks fornece várias opções para facilitar o carregamento de dados no workspace para exploração. O método preferencial para carregar dados com o pandas varia dependendo de como você carrega os dados no workspace.

Se tiver pequenos arquivos de dados armazenados junto com notebooks no computador local, você poderá carregar dados e código junto com as pastas Git. Em seguida, você pode usar caminhos relativos para carregar arquivos de dados.

O Azure Databricks fornece opções extensas baseadas em interface do usuário para carregamento de dados. A maioria dessas opções armazena seus dados como tabelas Delta. Você pode ler uma tabela Delta em um DataFrame Spark e convertê-la em um DataFrame pandas.

Se você salvou arquivos de dados usando DBFS ou caminhos relativos, poderá usar o DBFS ou os caminhos relativos para recarregar esses arquivos de dados. O código a seguir fornece um exemplo:

import pandas as pd

df = pd.read_csv("./relative_path_test.csv")
df = pd.read_csv("/dbfs/tmp/dbfs_test.csv")

Você pode carregar dados diretamente do Azure Data Lake Storage usando pandas e uma URL totalmente qualificada. Você precisa fornecer credenciais de nuvem para acessar dados de nuvem. Os pacotes Python fsspec e adlfs também devem ser instalados.

df = pd.read_csv(
  f"abfss://{container}@{storage_account}.dfs.core.windows.net/{file_path}",
  storage_options={
    "sas_token": sas_token_value
  }
)