reduce(func)

Agrega os elementos do RDD usando uma função func (que leva dois argumentos e retorna um). A função deve ser comutativa e associativa para que possa ser computada corretamente em paralelo.

Exemplo:


In [2]:
data = sc.parallelize(range(1, 11))

def summation(a, b): return a + b
def max(a, b): return a if a > b else b

# reduce to find the sum
print (data.reduce(summation))
# reduce to find the max
print (data.reduce(max))


55
10

collect()

Retornar todos os elementos do RDD como uma lista (do python, no caso). Isso geralmente é útil após um filtro ou outra operação que retorna um subconjunto suficientemente pequeno dos dados.

Exemplo:


In [ ]:
data = sc.parallelize(range(1, 1001))
print 'data: ', data.filter(lambda i: i % 10 == 0).collect()

count()

Retorna o número de elementos no RDD.

Exemplo:


In [ ]:
data = sc.parallelize(range(1, 1001))
print ('data: ', data.count())
print ('data filtered: ', data.filter(lambda i: i % 10 == 0).count())

take(n)

Retorna uma lista com os primeiros n elementos do RDD.

Exemplo:


In [3]:
data = sc.parallelize(range(1, 1001))
print ('data first 10: ', data.take(10))


data first 10:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

takeSample(withReplacement, num, [seed])

Retorna uma lista com uma amostra aleatória de num elementos do RDD, com ou sem substituição (withReplacement), opcionalmente pré-especificando uma semente (seed) de gerador de números aleatórios.

Exemplo:


In [8]:
data = sc.parallelize(range(1, 11))
# sampling with replacement
print (data.takeSample(True, 4))
# sampling without replacement
print (data.takeSample(False, 4))


[3, 7, 1, 5]
[5, 10, 7, 4]

saveAsTextFile(path)

Escreve os elementos do RDD como um arquivo de texto (ou conjunto de arquivos de texto) em um determinado diretório no sistema de arquivos local, no HDFS ou qualquer outro sistema de arquivos suportado pelo Hadoop. O Spark chamará toString em cada elemento para convertê-lo em uma linha de texto no arquivo.

Exemplo:


In [4]:
data = sc.parallelize(range(1, 1001))
data.saveAsTextFile("range_1_to_100")

# Visualize o diretório deste notebook. Existirá um pasta com o nome range_1_to_100. 
# Nela haverá arquivos que do RDD. Cada partição do processamento tem um arquivo correspondente.

foreach(func)

Executa uma função func para cada elemento do RDD. Isso geralmente é feito para operações sem tanto efeito, como atualizar um acumulador ou interagir com sistemas de armazenamento externo.

Exemplo:


In [17]:
data = sc.parallelize(range(1, 1001))

# accumulator
summation_20_mult = sc.accumulator(0)

def conditional_print(i):
    if i % 20 == 0: 
        print(i)
        summation_20_mult.add(i)
     

data.foreach(conditional_print)

print ('Summation of multiple of 20 from 1 to 1000: ', summation_20_mult.value)


Summation of multiple of 20 from 1 to 1000:  25500

Links:


In [ ]: