Visão geral
- Entenda a diferença entre APIs 3 faíscas: RDD, quadros de dados e conjuntos de dados
- Veremos como criar RDD, quadros de dados e conjuntos de dados.
Introdução
Passaram 11 anos desde Apache Spark começou a existir e, impressionante e continuamente, tornou-se a primeira escolha dos desenvolvedores de big data. Os desenvolvedores sempre adoraram fornecer APIs simples e poderosas que podem realizar qualquer tipo de análise de big data..
Inicialmente, sobre 2011 surgiu com o conceito de RDD, depois em 2013 com Dataframes e mais tarde em 2015 com o conceito de conjuntos de dados. Nenhum deles depreciou, ainda podemos usar todos eles. Neste post, vamos entender e ver a diferença entre os três.
Tabela de conteúdo
- O que são RDD?
- Quando usar RDD?
- O que são frames de dados?
- O que são conjuntos de dados?
- RDD vs Dataframes vs Datasets?
O que são RDD?
RDDs ou conjuntos de dados distribuídos resilientes são a estrutura de dados fundamental do Spark. É a coleção de objetos que é capaz de armazenar dados particionados nos vários nós do cluster e também permite que eles façam o processamento em paralelo..
É tolerante a falhas se você realizar várias transformações no RDD e, em seguida,, para qualquer circustância, algum nó falha. El RDD, nesse caso, é capaz de se recuperar automaticamente.
Existem 3 alternativas para criar um ASD:
- Paralelo a uma coleta de dados existente
- Referência ao arquivo de dados externos armazenados
- Criação de RDD a partir de um RDD existente
Quando usar RDD?
Podemos usar RDD nas seguintes situações:
- Quando queremos fazer transformações de baixo nível no conjunto de dados. Leia mais sobre transformações RDD: PySpark para realizar transformações
- Não infere automaticamente o esquema dos dados ingeridos, precisamos especificar o esquema de cada conjunto de dados quando criamos um RDD. Aprenda como inferir o esquema RDD aqui: Criação de pipelines de aprendizado de máquina com o PySpark
O que são frames de dados?
Foi introduzido pela primeira vez na versão Spark 1.3 para superar as limitações do Spark RDD. Spark Dataframes são a coleção distribuída de pontos de dados, mas aqui, os dados são organizados em colunas nomeadas. Habilite os desenvolvedores a depurar o código em todo o tempo de execução, o que não era permitido com RDDs.
Os frames de dados podem ler e gravar os dados em vários formatos, como CSV, JSON, EURO, Tabelas HDFS e HIVE. Já está otimizado para processar grandes conjuntos de dados para a maioria das tarefas de pré-processamento, então não precisamos escrever funções complexas por conta própria.
Usa um otimizador de catalisador para fins de otimização. Se você quiser ler mais sobre o otimizador de catalisador, Eu recomendo fortemente que você leia este post: Tutorial prático para analisar dados usando Spark SQL
Vamos ver como criar um quadro de dados usando o PySpark.
O que são conjuntos de dados?
Spark Datasets é uma extensão da API Data Frames com os benefícios de RDDs e conjuntos de dados. É rápido e oferece uma interface de tipo seguro. Segurança de tipo significa que o compilador irá validar os tipos de dados de todas as colunas no conjunto de dados apenas durante a compilação e irá lançar um erro se houver alguma discrepância nos tipos de dados.
Os usuários de RDD encontrarão algo semelhante ao código, mas é mais rápido que RDD. Pode processar com eficiência dados estruturados e não estruturados.
Ainda não podemos criar conjuntos de dados Spark em Python. A API Dataset está ativada apenas em Scala e Java.
RDD x frames de dados x conjuntos de dados
RDD | Quadros de dados | Conjuntos de dados | |
Representação de dados | RDD é uma coleção distribuída de itens de dados sem qualquer esquema. | É também a coleção distribuída organizada nas colunas nomeadas. | É uma extensão de Dataframes com mais recursos, como segurança de tipo e interface orientada a objetos. |
Melhoria | Nenhum mecanismo de otimização integrado para RDD. Os próprios desenvolvedores devem escrever o código otimizado. | Usa um otimizador de catalisador para otimização. | Também usa um otimizador de catalisador para fins de otimização. |
Projeção de contorno | Aqui, precisamos definir o esquema manualmente. | Ele descobrirá automaticamente o esquema do conjunto de dados. | Além disso, ele encontrará automaticamente o esquema do conjunto de dados por meio do mecanismo SQL. |
Operação de agregação | O RDD é mais lento do que os quadros de dados e conjuntos de dados para realizar operações simples, como agrupar dados. | Fornece uma API simples para realizar operações de agregação. Executa agregação mais rápido do que RDDs e conjuntos de dados. | O conjunto de dados é mais rápido do que RDDs, mas um pouco mais lento do que os Dataframes. |
Notas finais
Neste post, vimos a diferença entre as três principais APIs do Apache Spark. Então, para concluir, se você quiser uma semântica rica, abstrações de alto nível, segurança de tipo, elija Dataframes o Datasets. Se você precisar de mais controle sobre a parte de pré-processamento, você sempre pode usar os RDDs.
Eu recomendo fortemente que você verifique esses recursos adicionais no Apache Spark para aumentar seu conhecimento.:
Se você achou esta postagem informativa, Compartilhe com seus amigos, e também se você quiser dar sugestões sobre o que deve ser abordado, sinta-se à vontade para deixá-los nas notas abaixo.