O que é RDD em faísca

A definição diz:

A RDD é uma colecção distribuída imutável de objectos

Não percebo bem o que significa. É como os dados (objetos particionados) armazenados no disco rígido se assim for, então como é que os RDD podem ter classes definidas pelo usuário (como java, scala ou python)

a partir desta ligação: https://www.safaribooksonline.com/library/view/learning-spark/9781449359034/ch03.html ele menciona:

Os utilizadores criam RDDs de duas formas:: ao carregar um conjunto de dados externo, ou distribuição de uma coleção de objetos (por exemplo, uma lista ou conjunto) em seus programa do controlador

Estou realmente confuso por entender o RDD em geral e em relação à faísca e à hadoop.

Alguém me ajude, por favor.

Author: kittu, 2015-12-23

8 answers

Um RDD é, essencialmente, a representação de faísca de um conjunto de dados, espalhado por várias máquinas, com APIs para te deixar agir sobre ele. Um RDD pode vir de qualquer fonte de dados, por exemplo, arquivos de texto, um banco de dados via JDBC, etc.

A definição formal é:

Os DDR são estruturas de dados paralelas tolerantes a falhas que permitem aos utilizadores persistem explicitamente os resultados intermédios na memória, controlam os particionamento para otimizar a colocação de dados, e manipulá-los usando um conjunto rico de operador.

Se quiser os detalhes completos sobre o que é um RDD, leia um dos principais artigos académicos da Spark, conjuntos de dados distribuídos resilientes: uma abstracção tolerante a falhas para a computação em clusters de memória

 28
Author: Ewan Leith, 2017-08-04 14:44:34

RDD é uma referência lógica de um {[[0]} que é particionado através de muitas máquinas de servidor no conjunto. os RDD são imutáveis e são auto-recuperados em caso de falha.

dataset podem ser os dados carregados externamente pelo Usuário. Pode ser um ficheiro json, csv ou um ficheiro de texto sem uma estrutura de dados específica.

enter image description here

Actualizar: aqui está um artigo que descreve os RDD internos:

Espero que isto ajude.
 10
Author: tharindu_DG, 2015-12-23 12:06:02
Formalmente, um RDD é uma colecção de registos apenas de leitura e particionada. Os RDD só podem ser criados através de operações determinísticas com base em (1) dados em armazenamento estável ou (2) outros RDD.

Os RDDs têm as seguintes propriedades -

  1. Imutabilidade e separação: DDR composto por uma colecção de registos fraccionados. Partição é uma unidade básica de paralelismo em um RDD, e cada partição é uma divisão lógica de dados que é imutável e criado através de algumas transformações nas partições existentes.A imutabilidade ajuda a alcançar consistência nos cálculos.

    Os utilizadores podem definir os seus próprios critérios para o particionamento com base nas chaves nas quais querem juntar vários conjuntos de dados, se necessário.

  2. Operações grosseiras: Operações grosseiras são operações que são aplicadas a todos os elementos em conjuntos de dados. Por exemplo-um mapa, ou filtro ou operação groupBy que será realizada em todos os elementos em um partição da RDD.

  3. Tolerância À Falha: Uma vez que RDDs são criados sobre um conjunto de transformações , ele registra essas transformações, ao invés de dados reais.Graph of these transformations to produce one RDD is called as Lineage Graph.

Por exemplo -

firstRDD=sc.textFile("hdfs://...")

secondRDD=firstRDD.filter(someFunction);

thirdRDD = secondRDD.map(someFunction);

result = thirdRDD.count()

No caso de perdermos alguma partição de RDD, podemos repetir a transformação nessa partição na linhagem para alcançar a mesma computação, em vez de fazer a replicação de dados através múltiplos nós.Esta característica é o maior benefício do RDD, porque ele economiza um monte de esforços em gerenciamento de dados e replicação e, assim, consegue computações mais rápidas.

  1. Avaliações preguiçosas: A Spark calcula os RDDs de forma preguiçosa na primeira vez que são usados em uma ação, de modo que ele pode pipeline transformações. Assim, no exemplo acima, o RDD será avaliado apenas quando a ação count() for invocada.

  2. Persistência: Os utilizadores podem indicar quais os RDD que irão utilizar reutilizar e escolher uma estratégia de armazenamento para eles (por exemplo, armazenamento em memória ou em disco, etc.)

Estas propriedades dos RDDs tornam-nos úteis para cálculos rápidos.

 7
Author: Mahesh, 2017-01-04 08:00:59

O conjunto de dados distribuídos resilientes (RDD) é a forma como a Spark representa os dados. Os dados podem vir de várias fontes:

  • Ficheiro De Texto
  • ficheiro CSV
  • ficheiro JSON
  • Base de dados (através do controlador JBDC)

RDD em relação à faísca

A faísca é apenas uma implementação da RDD.

RDD em relação ao Hadoop

O poder do Hadoop reside no facto de permitir que os utilizadores escrevam computações paralelas sem ter que se preocupar com a distribuição de trabalho e tolerância de falhas. No entanto, o Hadoop é ineficiente para as aplicações que reutilizam resultados intermediários. Por exemplo, algoritmos iterativos de aprendizagem de máquinas, como PageRank, K-significa agrupamento e regressão logística, reutilizar resultados intermediários.

A RDD permite armazenar os resultados intermédios dentro da RAM. Hadoop teria que escrevê-lo para um sistema de armazenamento externo estável, que gera disco I/O e serialização. Com o RDD, a faísca pode chegar a 20X mais rápido do que o Hadoop para aplicações iterativas.

Mais detalhes sobre a Spark

Transformações grosseiras

As transformações aplicadas a uma RDD são grosseiras. Isto significa que as operações em um RDD são aplicadas a todo o conjunto de dados, não em seus elementos individuais. Portanto, operações como mapa, filtro, grupo, redução são permitidas, mas operações como set(i) e get(I) não são.

O inverso de granulado grosseiro é de granulado fino. A um sistema de armazenamento fino seria uma base de dados.

Tolerante A Falhas

Os RDD são tolerantes a falhas, que é uma propriedade que permite ao sistema continuar a funcionar correctamente em caso de falha de um dos seus componentes.

A tolerância à faísca está fortemente ligada à sua natureza grosseira. A única maneira de implementar a tolerância de falha em um sistema de armazenamento de granulado fino é replicar seus dados ou log atualizações através de máquinas. No entanto, num sistema de granulometria grosseira, tal como a faísca, só as transformações são registadas. Se uma partição de um RDD é perdida, o RDD tem informações suficientes para recompô-la rapidamente.

Armazenamento de dados

O RDD é "distribuído" (separado) nas partições. Cada partições podem estar presentes na memória ou no disco de uma máquina. Quando Spark quer lançar uma tarefa em uma partição, ele envia-a para a máquina que contém a partição. Isto é conhecido como "agendamento localmente consciente".

Fontes : Grandes trabalhos de investigação acerca da faísca : http://spark.apache.org/research.html

Inclui o papel sugerido por Ewan Leith.

 6
Author: pgirard, 2016-10-14 20:15:56

RDD = conjunto de dados distribuídos resilientes

([1]}resiliente (significado do dicionário) = (de uma substância ou objecto) capaz de recuar ou voltar a ficar em forma após dobrar, esticar ou ser comprimido

O RDD é definido como (do LearningSpark-OREILLY): a capacidade de recompor sempre um RDD é, na verdade, a razão pela qual os RDDs são chamados de "resilientes"."When a machine holding RDD data fails, Spark uses this ability to recompute the missing partitions, transparent to the user.

Isto significa os "dados" estão certamente sempre disponíveis. Além disso, Spark pode funcionar sem Hadoop e, portanto, os dados não são replicados. Uma das melhores características do Hadoop2. 0 é a 'alta disponibilidade' com a ajuda do Namenode Passive Standby. O mesmo é conseguido por RDD em faísca.

Um dado RDD (dados) pode abranger vários nós em aglomerado de faíscas (como no aglomerado baseado em Hadoop).

Se algum nó falhar, o Spark pode voltar a calcular o RDD e carregar os dados noutro nó, e os dados estão sempre disponivel. Faísca gira em torno do conceito de um resiliente distribuído conjunto de dados (RDD), que é um tolerantes a falhas coleção de elementos de que podem ser operadas em paralelo (http://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds)

 5
Author: SPR, 2016-11-08 00:20:59

Para comparar o RDD com a colecção scala, em baixo estão poucas diferenças

  1. o mesmo, mas funciona num aglomerado
  2. preguiçoso na natureza onde as colecções scala são rigorosas
  3. o RDD é sempre imutável, isto é, não se pode alterar o estado dos dados na recolha
  4. os DÉBITOS DIRECTOS SEPA são auto-recuperados, isto é, tolerantes a falhas
 2
Author: Saketh, 2015-12-23 11:08:28

RDD (R esiliente D istributed D atasets) são uma abstracção para representar dados. Formalmente, eles são uma coleção de registros apenas de leitura, particionado que fornece uma API conveniente.

O RDD fornece uma solução de desempenho para o processamento de grandes conjuntos de dados em estruturas de computação em aglomerados, tais como o MapReduce, abordando algumas questões-chave:

  • Os dados são guardados na memória para reduzir o disco I / O; isto é particularmente relevante para a iteração computações -- não tendo que persistir dados intermediários para o disco
  • a tolerância à falha (resiliência) é obtida não através da reprodução de dados, mas mantendo o registo de todas as transformações aplicadas ao conjunto de dados inicial (a linhagem ). Desta forma, em caso de falha os dados perdidos podem sempre ser recompostos a partir de sua linhagem e evitar a replicação de dados novamente reduz a sobrecarga de armazenamento
  • Avaliação preguiçosa, ou seja, os cálculos são feitos primeiro quando são necessário

Os RDD têm duas limitações principais:

    São imutáveis (apenas para leitura)
  • Eles apenas permitemtransformações grosseiras (isto é, Operações que se aplicam a todo o conjunto de Dados)
Uma boa vantagem conceitual dos RDD é que eles empacotam dados e códigos, tornando mais fácil reutilizar dutos de dados.

Fontes: conjuntos de dados distribuídos resilientes: uma abstracção tolerante a falhas para a computação em aglomerado de memória , Uma arquitectura para o processamento rápido e Geral de dados em grandes aglomerados

 0
Author: user2314737, 2018-06-27 21:36:36

RDD é uma forma de representar dados em faísca.A fonte de dados pode ser JSON,CSV textfile ou alguma outra fonte. O RDD é tolerante a falhas, o que significa que armazena dados em vários locais(ou seja, os dados são armazenados de forma distribuída ) de modo que se um nó falha os dados podem ser recuperados. Em dados RDD está disponível em todos os momentos. No entanto, os RDD são lentos e difíceis de codificar, portanto desatualizados. Foi substituído pelo conceito de DataFrame e Dataset.

 0
Author: saad, 2018-07-13 11:02:19