Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede....

52
Haddop, MapReduce e Spark Fabr´ ıcio Olivetti de Fran¸ ca Universidade Federal do ABC

Transcript of Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede....

Page 1: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Haddop, MapReduce e Spark

Fabrıcio Olivetti de Franca

Universidade Federal do ABC

Page 2: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Topicos

1. Conceitos Basicos

2. MapReduce

3. Spark

4. Transformacoes Basicas

5. Acoes Basicas

1

Page 3: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Conceitos Basicos

Page 4: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop

Como vimos na aula inicial, muitas bases de dados de interesse pratico

necessitam de mais espaco do que os maiores HDs podem suportar.

Uma solucao inicial e dividir os dados em varios HDs.

2

Page 5: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop

Exemplo: log de requisicoes http em um servidor de paginas de internet.

Dado um computador central que fara o gerenciamento das requisicoes e

HDs externos conectados por rede.

Operacionalizacao: um HD e escolhido para armazenar o log atual. Ao

atingir 98% da capacidade, outro HD e escolhido.

3

Page 6: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop

Quantos problemas voces conseguem enumerar?

• Se um HD falha, perdemos aqueles dados para sempre.

• Se um HD falha, perdemos as amostras de todo um perıodo, criando

um vies estatıstico.

• Se a comunicacao com o HD atual falhar, o que fazer?

• Se o computador central falhar?

4

Page 7: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop

Quantos problemas voces conseguem enumerar?

• Se um HD falha, perdemos aqueles dados para sempre.

• Se um HD falha, perdemos as amostras de todo um perıodo, criando

um vies estatıstico.

• Se a comunicacao com o HD atual falhar, o que fazer?

• Se o computador central falhar?

4

Page 8: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop

Quantos problemas voces conseguem enumerar?

• Se um HD falha, perdemos aqueles dados para sempre.

• Se um HD falha, perdemos as amostras de todo um perıodo, criando

um vies estatıstico.

• Se a comunicacao com o HD atual falhar, o que fazer?

• Se o computador central falhar?

4

Page 9: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop

Quantos problemas voces conseguem enumerar?

• Se um HD falha, perdemos aqueles dados para sempre.

• Se um HD falha, perdemos as amostras de todo um perıodo, criando

um vies estatıstico.

• Se a comunicacao com o HD atual falhar, o que fazer?

• Se o computador central falhar?

4

Page 10: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop

Quantos problemas voces conseguem enumerar?

• Se um HD falha, perdemos aqueles dados para sempre.

• Se um HD falha, perdemos as amostras de todo um perıodo, criando

um vies estatıstico.

• Se a comunicacao com o HD atual falhar, o que fazer?

• Se o computador central falhar?

4

Page 11: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Hadoop Distributed File System

Criado para tratar essas questoes de confiabilidade ao mesmo tempo que

minimiza custos.

• Suporta arquivos muito grandes e gerencia milhares de nos ao

mesmo tempo.

• Assume a possibilidade de lidar com hardware de baixo custo.

• Duplicacao de arquivos para lidar com falhas.

• Deteccao de falhas para previnir possibilidade de perdas.

• Computacao otimizada: o processamento e feito onde os dados

residem.

• Executa em maquinas e sistemas heterogeneos.

5

Page 12: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Arquitetura Geral

• Distribuıdo com um pouco de centralizacao.

• Nos principais: principais maquinas com poder alto de

processamento e armazenamento.

• Nos principais gerenciam o envio e recebimento de tarefas de

processamento para os outros nos (TaskTracker).

• Nos principais gerenciam os locais onde os dados devem residir,

dados mais utilizados estao mais proximos (DataNode).

• Nos centrais mantem um mapa dos arquivos e diretorios do sistema

distribuıdo (NameNode).

6

Page 13: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Arquitetura Geral

• Nos centrais envia as tarefas para os nos principais (JobTracker).

• Pensado em leituras frequentes de lotes de arquivos.

• Escrita de arquivo e custosa, geralmente Write-Once, Read-Many.

• Escrito em Java com suporte a Python.

7

Page 14: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

NameNode

• Armazena os metadados tıpicos de um sistema de arquivo.

• Apenas um servidor armazenando o NameNode, ele deve ser o mais

importante, estavel e seguro.

• Cuida da criacao de replicas de blocos sempre que ocorre falha em

um DataNode.

8

Page 15: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

DataNode

• Armazena os dados de arquivos.

• Suporta qualquer sistema de arquivo (FAT, NTFS, ext, etc.).

• Notifica o NameNode sobre os blocks que ele possui (ao substituir

um NameNode ele requisita tal informacao).

• Arquivos sao armazenados em blocos de 64MB por padrao.

• Envia um relatorio periodico ao NameNode.

• Envio de dados inteligente, tem preferencia pelo envio aos

DataNodes mais proximos.

9

Page 16: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Estrategias de Armazenamento

• O NameNode replica cada bloco de arquivo 2 vezes em um rack

local e uma vez em outro rack.

• Replicas adicionais podem ser distribuıdos aleatoriamente para

outros nos.

• Ao requisitar um certo bloco, esse e recuperado do no mais proximo

ao cliente.

• Em caso de falha (falta de relatorio periodico), o NameNode escolhe

outros DataNodes para replicar.

• Otimiza o balanceamento do armazenamento e comunicacao de rede.

10

Page 17: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Estrategias de Corretude

• Usa CRC32 para validar os dados.

• Calcula checksum para cada 512 bytes de dados, DataNode

armazena o crc.

• Cliente recebe os dados e seus respectivos checksums.

• Em caso de falha de verificacao, cliente reporta e recebe de outra

replica.

11

Page 18: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Comandos basicos

• hadoop dfs -mkdir /diretorio

• hadoop dfs -cat /diretorio/arquivo.txt

• hadoop dfs -rm /diretorio/arquivo.txt

Conta com interface Web: http://host:port/dfshealth.jsp

12

Page 19: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Exercıcio

Supondo um cluster com 4 racks e 100 nos por rack, supondo tambem a

probabilidade de falha de um no e de 1%.

Calcule a probabilidade de perda irreparavel de um bloco de dados nas

configuracoes padroes.

P(ni = falha ) = 0.01

P(n nos falharam ) =

(400

n

)· 0.01n · 0.99n

P(perda de dados | nnosfalharam) =

(n3

)(4003

)P(perda de dados) =

400∑n=3

(400

n

)· 0.01n · 0.99n ·

(n3

)(4003

)

13

Page 20: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Exercıcio

Supondo um cluster com 4 racks e 100 nos por rack, supondo tambem a

probabilidade de falha de um no e de 1%.

Calcule a probabilidade de perda irreparavel de um bloco de dados nas

configuracoes padroes.

P(ni = falha ) = 0.01

P(n nos falharam ) =

(400

n

)· 0.01n · 0.99n

P(perda de dados | nnosfalharam) =

(n3

)(4003

)P(perda de dados) =

400∑n=3

(400

n

)· 0.01n · 0.99n ·

(n3

)(4003

)13

Page 21: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

MapReduce

Page 22: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Modelo MapReduce

Modelo de programacao distribuıda.

Dean, Jeffrey, and Sanjay Ghemawat. ”MapReduce: simplified data

processing on large clusters.”Communications of the ACM 51.1 (2008):

107-113.

Ideias: Unix pipeline e basico de Programacao Funcional:

cat input | grep | sort | uniq -c | cat > output

input > map > shuffle & sort > reduce > output

Trabalha com stream de dados.

14

Page 23: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Modelo MapReduce

Modelo de programacao distribuıda.

Dean, Jeffrey, and Sanjay Ghemawat. ”MapReduce: simplified data

processing on large clusters.”Communications of the ACM 51.1 (2008):

107-113.

Ideias: Unix pipeline e basico de Programacao Funcional:

cat input | grep | sort | uniq -c | cat > output

input > map > shuffle & sort > reduce > output

Trabalha com stream de dados.

14

Page 25: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Modelo MapReduce

• Balanceamento de carga otimizado.

• Recuperacao rapida de falhas.

• Possibilidade de reprocessar em caso de falhas.

• Processamento duplicado em caso de lentidao.

• Otimizacoes locais.

16

Page 26: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Word Count

• Mapper

• Entrada: linhas de texto

• Saıda: chave = palavra, valor = 1

• Reducer

• Entrada: chave = palavra, valor = lista de contagens

• Saıda: chave = palavra, valor = soma

17

Page 28: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

MapReduce

mapper :: Token -> (Token, Integer)

reducer :: [(Token, [Integer])] -> [(Token, Integer)]

mapper token = (token, 1)

reducer xs = map (\ (k,vs) -> (k, sum vs)) xs

19

Page 29: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Combiners

Uma forma de minimizar a carga dos Reducers, gerando uma avaliacao

parcial em cada no.

E executado localmente, geralmente e igual ao proprio reducer.

20

Page 30: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Modelo MapReduce

• Funciona bem para programas pequenos e manipulacoes simples dos

dados.

• Aplicacoes de larga escala sao difıceis de serem implementadas.

• Problema de performance.

21

Page 31: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Exercıcio

No exemplo de contagem de palavras, o que deve ser feito entre o

mapper e o reducer feito em Haskell para que ele funcione?

DICA

Considere a saıda do mapper e a entrada do reducer:

mapper :: Token -> (Token, Integer)

reducer :: [(Token, [Integer])] -> [(Token, Integer)]

22

Page 32: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Exercıcio

No exemplo de contagem de palavras, o que deve ser feito entre o

mapper e o reducer feito em Haskell para que ele funcione?

DICA

Considere a saıda do mapper e a entrada do reducer:

mapper :: Token -> (Token, Integer)

reducer :: [(Token, [Integer])] -> [(Token, Integer)]

22

Page 33: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Spark

Page 34: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Spark: Alem do MapReduce

De tal forma a facilitar o desenvolvimento de aplicacoes e generalizacao

de tarefas comuns no MapReduce, foi criada a plataforma Spark.

• Mais eficiente: computacao distribuıda + multithreading.

• Linguagem estendida.

• Compartilhamento de Dados mais rapido.

• Arvore de processamento.

• Suporte a Scala, Java, Python, R.

23

Page 35: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Resilient Distributed Dataset: RDD

Abstracao principal do Spark:

• A base de dados e um objeto.

• Aplica operacoes nesses objetos, como metodos

• Pode estar armazenado em Hadoop, sistema de arquivo comum ou

ate na memoria (transparente).

• Transformacoes (paralelas) e Acoes (saıda de dados).

• Refaz operacoes em caso de falhas.

24

Page 36: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Operacoes em uma RDD

Transformacoes f :: RDD -> RDD:

• Avaliacao Preguicosa.

• Ex.: map, reduce, filter.

• RDDs podem ser de listas de valores ou lista de tuplas chave-valor

[(K, V)].

Acoes f :: RDD -> a:

• Gera computacao.

• Ex.: count, saveAsTextFile, collect.

25

Page 37: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Directed Acyclic Graph: DAG

No MapReduce do Hadoop, cada operacao Map-Reduce e independente

uma da outra, mesmo quando as tarefas estao interligadas.

Considere o problema de retornar a contagem de palavras ordenadas pela

frequencia:

mapper1 :: Linha -> [(Palavra, Integer)]

reducer1 :: [(Palavra, [Integer])] -> [(Palavra, Integer)]

mapper2 :: (Palavra, Integer) -> [(Integer, Palavra)]

reducer2 :: [(Integer, [Palavra])] -> [(Integer, [Palavra])]

Qual a definicao das funcoes mapper2 e reducer2?

26

Page 38: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Directed Acyclic Graph: DAG

Primeiro, o Hadoop ira completar TODA a tarefa MapReduce1. Somente

apos a conclusao e escrita do arquivo de saıda (escrita custa caro!), a

tarefa MapReduce2 iniciara, para entao gerar a resposta.

27

Page 39: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Directed Acyclic Graph: DAG

No Spark, e feito um grafo direcionado e acıclico (arvore) de

processamento que interliga as tarefas de MapReduce (ou outras

transformacoes) para gerar o menor numero de escritas possıveis.

28

Page 40: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Directed Acyclic Graph: DAG

Uma vez que a RDD e imutavel e as transformacoes devem ser puras, e

possıvel fazer a composicao dessas funcoes sem introduzir efeitos

inesperados.

29

Page 41: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Transformacoes Basicas

Page 42: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Criando uma RDD

Uma RDD pode ser criada a partir de uma colecao em memoria ou um

arquivo existente no sistema de arquivos (distribuıdos ou nao) 1.

listaComidas = [’bife’, ’alface’, ’arroz’]

comidasRDD = sc.parallelize(listaComidas, 2)

textoRDD = sc.textFile(nomeArquivo, 2)

O segundo parametro e a quantidade de particoes por no local. O ideal e

criar cerca de 2 particoes por core (Porque?)

1os comandos seguem a sintaxe Pyspark

30

Page 43: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

MapReduce

Similar ao map e fold do Haskell:

# [Linha] -> [Int] -> [Int] -> Int

textoRDD.map(lambda linha: length(linha))

.reduce(lambda (l1, l2): l1 + l2)

Nota: reduce e uma acao, e portanto forca o processamento.

31

Page 44: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

reduceByKey

Parecido com o procedimento que fizemos ate entao no Haskell: aplica

uma funcao no resultado de groupByKey . sortByKey:

# [Linha] -> [(Palavra, Int)] -> [(Palavra,[Int])]

# -> [(Palavra, Int)]

textoRDD.map(lambda linha: [(w,1) for w in linha.split()])

.reduceByKey(lambda f1,f2: f1+f2)

32

Page 45: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

groupByKey

Retorna o resultado de groupByKey . sortByKey apos um map:

# [Linha] -> [(Palavra, Int)] -> [(Palavra,[Int])]

textoRDD.map(lambda linha: [(w,1) for w in linha.split()])

.groupByKey()

33

Page 46: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

filter

Similar ao Haskell, remove da RDD todos os elementos que retorna falso

para a funcao passada como parametro:

# [Linha] -> [(Palavra, Int)] -> [(Palavra,[Int])]

textoRDD.map(lambda linha: [(w,1) for w in linha.split()])

.reduceByKey(lambda f1,f2: f1+f2)

.filter(lambda (w, f): f > 3)

34

Page 47: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

join

Une a RDD de tuplas com outra RDD de tuplas dado que as chaves sao

do mesmo tipo:

# [(Palavra, Int)] -> [(Palavra, Int)]

# -> [(Palavra, (Int, Int))]

freqPalavraRDD.join(idfPalavraRDD)

35

Page 48: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

cartesian

Une duas RDDs atraves de um produto cartesiano de seus elementos:

# [(Palavra, Int)] -> [(Palavra, Int)]

# -> [(Palavra, Int), (Palavra, Int)]

freqPalavraRDD.cartesian(freqPalavraRDD)

36

Page 49: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Pipelines de processamento

Conforme mencionado anteriormente, o retorno das transformacoes do

Spark sao intencoes de computacao, a sequencia de transformacoes

formam um pipeline de processamento a ser computado quando

necessario.

pipeline1 = RDD.transforma1()

.transforma2()

.transforma3()

pipeline2 = pipeline1.transforma1()

.transforma2()

pipeline3 = pipeline1.transforma1(pipeline2)

.transforma2()

Dessa forma, o Spark consegue otimizar o processamento e evitar

redundancias.

37

Page 50: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Acoes Basicas

Page 51: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Acoes Basicas

• .collect(): retorna a RDD em memoria.

• .first(): retorna o primeiro elemento da RDD.

• .take(n): retorna os n primeiros elementos da RDD.

38

Page 52: Haddop, MapReduce e Spark - folivetti.github.io · HDs externos conectados por rede. Operacionaliza˘c~ao: um HD e ... perdemos as amostras de todo um per odo, criando ... N os centrais

Atividade 02

Complete o Laboratorio Pre-processamento no Spark

39