Ir para o conteúdo principal

O que é a API Spark?

Três interfaces — RDDs, DataFrames e Datasets — permitem que os desenvolvedores processem dados distribuídos em várias linguagens com desempenho otimizado.

por Equipe da Databricks

Archived. This article has not been updated since the publish date above. The dynamic nature of information means that previously accurate content can become outdated or even obsolete over time. Readers are advised to exercise due diligence and cross-check any information found in this blog post before making decisions or adopting any practices based on said information.

  • Os RDDs fornecem controle de baixo nível para o processamento de dados não estruturados com transformações funcionais, enquanto os DataFrames organizam os dados em colunas nomeadas para operações semelhantes a SQL.
  • Os Datasets combinam a segurança de tipo dos RDDs com as otimizações dos DataFrames, oferecendo verificação de erros em tempo de compilação e aproveitando o otimizador Catalyst para uma execução aprimorada.
  • O Spark 2.0+ unifica DataFrames e Datasets em uma única API de alto nível que simplifica o desenvolvimento e oferece desempenho superior em Python, Scala, Java e R.

Ao trabalhar com o Spark, você encontrará as três APIs: DataFrames, Datasets e RDDs.

O que são conjuntos de dados distribuídos resilientes?

Resilient Distributed Datasets (RDD) são uma coleção de registros que usam computação distribuída e é tolerante a falhas e imutável. Os RDDs podem operar em paralelo com APIs de baixo nível e seus recursos de atraso aceleram as operações do Spark. Além disso, os RDDs são compatíveis com duas operações:

  • Transformação: uma operação lenta que retorna outro RDD. Este RDD não é calculado a menos que uma ação seja tomada. Alguns exemplos de transformações são map(), flatmap(), filter()
    API do Spark: transformações de RDD
  • Ações: operações que acionam cálculos e retornam valores. Alguns exemplos de ações são count, top(), savetofile()
    API do Spark: ações de RDD

Desvantagens dos RDDs

Ao usar RDDs, cada RDD deve ser otimizado. Além disso, diferentemente dos conjuntos de dados e dos DataFrames, os RDDs não inferem o esquema dos dados ingeridos. Portanto, a especificação do esquema é necessária.

O que são DataFrames?

Um DataFrame é uma coleção distribuída de linhas em colunas nomeadas. Simplificando, é como uma planilha de Excel com títulos de coluna, comparável a uma tabela em um banco de dados relacional ou a um DataFrame em R ou Python. O DataFrame tem três características em comum com o RDD:

  • Imutável in nature: um DataFrame pode ser criado, mas não pode ser modificado após a criação. Assim como o RDD, apenas a conversão é possível.
  • Avaliações lentas: a tarefa não é executada até que a ação seja acionada.
  • Distribuição: O DataFrame, assim como o RDD, é distribuído.

Como criar um DataFrame

Existem várias maneiras de criar um DataFrame no Spark:

  • Usando diferentes formatos de dados (por exemplo, carregando dados de JSON, CSV, RDBMS, XML ou Parquet).
  • Carregando dados do RDD existente.
  • Especificando o esquema de maneira programática.
EBOOK

Principais conclusões sobre sistemas multiagentes, casos de uso de IA, avaliações e muito mais

Desvantagens dos DataFrames

A maior desvantagem da API DataFrame é que ela não é compatível com tempo de compilação com segurança. Isso limita os usuários quando a estrutura de dados é desconhecida.

O que são conjuntos de dados?

Datasets são uma coleção imutável e tipada de objetos mapeados para um esquema relacional. Os conjuntos de dados podem ser criados usando objetos JVM e manipulados usando transformações funcionais complexas. Eles podem ser criados de duas maneiras:

  • De forma dinâmica.
  • Carregando do arquivo JSON usando SparkSession.

Desvantagens dos conjuntos de dados

A principal desvantagem dos conjuntos de dados é que eles requerem conversão de tipo para string.
 

Recursos adicionais

Receba os posts mais recentes na sua caixa de entrada

Assine nosso blog e receba os posts mais recentes diretamente na sua caixa de entrada.