PySpark na Databricks

Databricks é construído sobre o Apache Sparkum mecanismo unified analytics para big data e machine learning. O PySpark ajuda o senhor a interagir com o Apache Spark usando a linguagem de programação Python, que é uma linguagem flexível e fácil de aprender, implementar e manter. Ele também oferece muitas opções de 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 em Databricks.

Introdução aos conceitos do Spark

É importante entender os conceitos do key Apache Spark antes de começar a usar o PySpark.

DataFrames

Os DataFrames são os principais objetos do Apache Spark. Um DataFrame é um dataset organizado em colunas nomeadas. O senhor pode pensar em um DataFrame como uma planilha ou uma tabela SQL, uma estrutura de dados bidimensional de uma série de registros (semelhante às linhas de uma tabela) e colunas de diferentes tipos. DataFrames fornecem um rico conjunto de funções (por exemplo, selecionar colunas, filtrar, join e agregar) que permitem que o senhor execute a manipulação comum de dados e a análise de tarefas com eficiência.

Alguns elementos importantes do DataFrame incluem:

  • Esquema: Um esquema define os nomes e os tipos de coluna de um DataFrame. Os formatos de dados têm semânticas diferentes para definição e aplicação de esquemas. Algumas fontes de dados fornecem informações sobre o esquema, enquanto outras dependem da definição manual do esquema ou permitem a inferência do esquema. Os usuários podem definir esquemas manualmente ou os esquemas podem ser lidos de uma fonte de dados.

  • Linhas: O Spark representa os registros em um DataFrame como objetos Row. Embora os formatos de dados subjacentes, como o Delta Lake, usem colunas para armazenar dados, para otimização o Spark armazena em cache e embaralha as linhas de uso de dados.

  • Colunas: As colunas em Spark são semelhantes às colunas em uma planilha e podem representar um tipo simples, como uma cadeia de caracteres ou um número inteiro, mas também tipos complexos, como matriz, mapa ou nulo. O senhor pode escrever consultas que selecionam, manipulam ou removem colunas de uma fonte de dados. As possíveis fontes de dados incluem tabelas, visualizações, arquivos ou outros DataFrames. As colunas nunca são removidas de um dataset ou de um DataFrame, elas são apenas omitidas dos resultados por meio de transformações .drop ou omissão em declarações select.

Processamento de dados

O Apache Spark usa a 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: Em Spark, o senhor expressa a lógica de processamento como transformações, que são instruções para carregar e manipular o uso de dados DataFrames. As transformações comuns incluem leitura de dados, junção, agregações e conversão de tipos. Para obter informações sobre transformações em Databricks, consulte transformação de 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 site Spark aguarda até que uma ação acione o cálculo de todas as transformações. Isso é conhecido como lazy evaluation (avaliação preguiçosa) ou lazy loading (carregamento preguiçoso), que permite que o senhor encadeie várias operações porque o Spark trata a execução delas de forma diferida, em vez de executá-las imediatamente quando são definidas.

Observação

A avaliação preguiçosa significa que o site DataFrames armazena consultas lógicas como um conjunto de instruções em uma fonte de dados em vez de um resultado na memória. Isso varia drasticamente da execução ansiosa, que é o modelo usado pelo Pandas DataFrames.

Ações: As ações instruem Spark a compute um resultado de uma série de transformações em um ou mais DataFrames. As operações de ação retornam um valor, que pode ser qualquer um dos seguintes:

  • Ações para gerar dados no console ou no seu editor, como display ou show

  • Ações para coletar dados (retorna Row objetos), como take(n) e first ou head

  • Ações para gravar na fonte de dados, como saveAsTable

  • Agregações que acionam um cálculo, como count

Importante

No pipeline de dados de produção, a gravação de 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 definidas em relação a uma ou mais fontes de dados, mas, em última análise, o site Apache Spark resolve as consultas de volta à fonte de dados original, de modo que os dados em si não são alterados e nenhum site DataFrames é alterado. Em outras palavras, os DataFrames são imutáveis. Por isso, após realizar as transformações, é retornado um novo DataFrame que deve ser salvo em uma variável para ser acessado em operações subsequentes. Se o senhor quiser avaliar um passo intermediário de suas transformações, chame uma ação.

APIs e biblioteca

Como em todos os APIs para Spark, o PySpark vem equipado com muitos APIs e biblioteca que habilitam e suportam funcionalidades avançadas, incluindo:

  • Processamento de dados estruturados com consultas relacionais com Spark SQL e DataFrames. O Spark SQL permite que o senhor misture consultas SQL com programas Spark. Com o Spark DataFrames, o senhor pode ler, gravar, transformar e analisar o uso de dados Python e SQL com eficiência, o que significa que está sempre aproveitando todo o potencial do Spark. Consulte PySpark Getting começar.

  • Processamento escalonável de transmissão com transmissão estruturada. O senhor pode expressar seu cálculo de transmissão da mesma forma que expressaria um cálculo de lotes em dados estáticos e o mecanismo Spark SQL o executa de forma incremental e contínua à medida que os dados de transmissão continuam a chegar. Consulte Visão geral da transmissão estruturada.

  • Estruturas de dados do Pandas e ferramentas de análise de dados que funcionam no Apache Spark com a API do Pandas no Spark. Pandas API em Spark permite que o senhor amplie a 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, conjunto de dados menor) e com Spark (produção, conjunto de dados distribuído). Consulte API do Pandas em Visão geral do Spark.

  • Algoritmos de aprendizado de máquina com aprendizado de máquina (MLlib). MLlib é uma biblioteca dimensionável de aprendizado de máquina criada em Spark que fornece um conjunto uniforme de APIs que ajuda os usuários a criar e ajustar o pipeline prático de machine learning. Consulte a visão geral da biblioteca do aprendizado de máquina.

  • computação gráfica e gráfico-paralela com GraphX. GraphX introduz um novo multigrafo direcionado com propriedades associadas a cada vértice e borda e expõe operadores de computação gráfica, algoritmos e construtores para simplificar a tarefa analítica gráfica. Consulte Visão geral do GraphX.

Referência do PySpark

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