Partilhar via


PySpark no Azure Databricks

O Azure Databricks foi criado com base no Apache Spark, um mecanismo de análise unificado para big data e aprendizado de máquina. O PySpark ajuda você a interagir com o Apache Spark usando a linguagem de programação Python, que é uma linguagem flexível que é fácil de aprender, implementar e manter. Ele também fornece muitas opções para visualização de dados no Databricks. O PySpark combina o poder do Python e do Apache Spark.

Este artigo fornece uma visão geral dos fundamentos do PySpark no Databricks.

Introdução aos conceitos do Spark

É importante entender os principais conceitos do Apache Spark antes de mergulhar no uso do PySpark.

DataFrames

DataFrames são os objetos principais no Apache Spark. Um DataFrame é um conjunto de dados organizado em colunas nomeadas. Você pode pensar em um DataFrame como uma planilha ou uma tabela SQL, uma estrutura de dados rotulada bidimensional de uma série de registros (semelhante a linhas em uma tabela) e colunas de diferentes tipos. Os DataFrames fornecem um conjunto avançado de funções (por exemplo, selecionar colunas, filtrar, unir e agregar) que permitem executar tarefas comuns de manipulação e análise de dados de forma eficiente.

Alguns elementos importantes do DataFrame incluem:

  • Esquema: Um esquema define os nomes de coluna e os tipos de um DataFrame. Os formatos de dados têm semânticas diferentes para definição e imposição de esquemas. Algumas fontes de dados fornecem informações de esquema, enquanto outras dependem da definição manual de esquema ou permitem inferência de esquema. Os usuários podem definir esquemas manualmente ou esquemas podem ser lidos a partir de uma fonte de dados.
  • Linhas: o Spark representa registros em um DataFrame como Row objetos. Enquanto formatos de dados subjacentes, como Delta Lake, usam colunas para armazenar dados, para otimização o Spark armazena caches e embaralha dados usando linhas.
  • Colunas: as colunas no Spark são semelhantes às colunas de uma planilha e podem representar um tipo simples, como uma cadeia de caracteres ou inteiro, mas também tipos complexos, como matriz, mapa ou nulo. Você pode escrever consultas que selecionam, manipulam ou removem colunas de uma fonte de dados. As possíveis fontes de dados incluem tabelas, exibições, arquivos ou outros DataFrames. As colunas nunca são removidas de um conjunto de dados ou de um DataFrame, elas são apenas omitidas dos resultados por meio .drop de transformações ou omissão nas select instruções.

Processamento de dados

O Apache Spark usa avaliação preguiçosa para processar transformações e ações definidas com DataFrames. Esses conceitos são fundamentais para entender o processamento de dados com o Spark.

Transformações: No Spark, você expressa a lógica de processamento como transformações, que são instruções para carregar e manipular dados usando DataFrames. As transformações comuns incluem leitura de dados, junções, agregações e conversão de tipos. Para obter informações sobre transformações no Azure Databricks, consulte Transformar dados.

Avaliação preguiçosa: O Spark otimiza o processamento de dados identificando o plano físico mais eficiente para avaliar a lógica especificada pelas transformações. No entanto, o Spark não atua nas transformações até que as ações sejam chamadas. Em vez de avaliar cada transformação na ordem exata especificada, o Spark espera até que uma ação acione a computação em todas as transformações. Isso é conhecido como avaliação preguiçosa, ou carregamento lento, que permite encadear várias operações porque o Spark lida com sua execução de maneira diferida, em vez de executá-las imediatamente quando elas são definidas.

Nota

Avaliação lenta significa que DataFrames armazenam consultas lógicas como um conjunto de instruções em relação a uma fonte de dados em vez de um resultado na memória. Isso varia drasticamente da execução ansiosa, que é o modelo usado pelos pandas DataFrames.

Ações: as ações instruem o Spark a calcular um resultado de uma série de transformações em um ou mais DataFrames. As operações de ação retornam um valor e podem ser qualquer um dos seguintes:

  • Ações para saída de dados no console ou no editor, como display ou show
  • Ações para coletar dados (retorna Row objetos), como take(n), e first ou head
  • Ações para gravar em fontes de dados, como saveAsTable
  • Agregações que acionam um cálculo, como count

Importante

Em pipelines de dados de produção, gravar dados normalmente é a única ação que deve estar presente. Todas as outras ações interrompem a otimização da consulta e podem levar a gargalos.

O que significa que os DataFrames são imutáveis?

DataFrames são uma coleção de transformações e ações que são definidas em relação a uma ou mais fontes de dados, mas, em última análise, o Apache Spark resolve consultas de volta às fontes de dados originais, para que os dados em si não sejam alterados e nenhum DataFrames seja alterado. Em outras palavras, DataFrames são imutáveis. Por isso, depois de executar transformações, um novo DataFrame é retornado que precisa ser salvo em uma variável para acessá-lo em operações subsequentes. Se você quiser avaliar uma etapa intermediária da sua transformação, chame uma ação.

APIs e bibliotecas

Como todas as APIs para o Spark, o PySpark vem equipado com muitas APIs e bibliotecas que habilitam e suportam funcionalidades poderosas, incluindo:

  • Processamento de dados estruturados com consultas relacionais com Spark SQL e DataFrames. O Spark SQL permite que você misture consultas SQL com programas Spark. Com o Spark DataFrames, você pode ler, escrever, transformar e analisar dados de forma eficiente usando Python e SQL, o que significa que você está sempre aproveitando todo o poder do Spark. Consulte PySpark Getting Started.
  • Processamento escalável de fluxos com Structured Streaming. Você pode expressar sua computação de streaming da mesma forma que expressaria uma computação em lote em dados estáticos e o mecanismo Spark SQL a executa de forma incremental e contínua à medida que os dados de streaming continuam a chegar. Consulte Visão geral do streaming estruturado.
  • Estruturas de dados Pandas e ferramentas de análise de dados que funcionam no Apache Spark com a API Pandas no Spark. A API do Pandas no Spark permite que você dimensione sua carga de trabalho de pandas para qualquer tamanho, executando-a distribuída em vários nós, com uma única base de código que funciona com pandas (testes, conjuntos de dados menores) e com o Spark (produção, conjuntos de dados distribuídos). Consulte Pandas API on Spark Overview.
  • Algoritmos de Machine Learning com Machine Learning (MLLib). MLlib é uma biblioteca de aprendizado de máquina escalável construída no Spark que fornece um conjunto uniforme de APIs que ajudam os usuários a criar e ajustar pipelines práticos de aprendizado de máquina. Consulte Visão geral da biblioteca de aprendizado de máquina.
  • Gráficos e computação paralela com GraphX. O GraphX introduz um novo multigrafo direcionado com propriedades anexadas a cada vértice e aresta e expõe operadores de computação de grafos, algoritmos e construtores para simplificar as tarefas de análise de gráficos. Consulte Visão geral do GraphX.

Tutoriais do Spark

Para obter exemplos de uso do PySpark on Databricks, consulte os seguintes artigos:

A documentação do Apache Spark também tem guias de início rápido e guias para aprender o Spark, incluindo o seguinte:

Referência do PySpark

O Azure Databricks mantém sua própria versão das APIs do PySpark e a referência correspondente, que pode ser encontrada nestas seções: