Compartilhar via


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 Panda sobre os DataFrames do PySpark. 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 a UDFs do pandas, que usam otimizações do Arrow semelhantes para funções de usuário arbitrárias definidas em 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. Confira Conectar-se ao Google Cloud Storage.

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:

import pandas as pd

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

df.to_csv("./relative_path_test.csv")
df.to_csv("/dbfs/dbfs_test.csv")

Você pode explorar arquivos gravados no DBFS com o comando magic %fs, como no exemplo a seguir. Observe que o diretório /dbfs é o caminho raiz para esses comandos.

%fs ls

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 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/dbfs_test.csv")

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

Se você estiver em um workspace habilitado para Unity Catalog, poderá acessar o armazenamento em nuvem com locais externos. Veja Crie um local externo para conectar o armazenamento em nuvem ao Azure Databricks.

Você pode carregar dados diretamente do Azure Data Lake Storage Gen2 usando pandas e uma URL totalmente qualificada. Você precisa fornecer credenciais de nuvem para acessar dados de nuvem.

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