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 [ ]:
data = sc.parallelize(range(1, 11))
def summation(a, b): return a + b
def max(a, b): return a if a > b else b
print 'data', data.collect()
print 'sum: ', data.reduce(summation)
print 'max: ', data.reduce(max)
In [ ]:
data = sc.parallelize(range(1, 1001))
print 'data: ', data.filter(lambda i: i % 10 == 0).collect()
In [ ]:
data = sc.parallelize(range(1, 1001))
print 'data: ', data.count()
print 'data filtered: ', data.filter(lambda i: i % 10 == 0).count()
In [ ]:
data = sc.parallelize(range(1, 1001))
print 'data first 10: ', data.take(10)
In [ ]:
data = sc.parallelize(range(1, 11))
print data.takeSample(True, 4)
print data.takeSample(False, 4)
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 [ ]:
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.
In [ ]:
data = sc.parallelize(range(1, 1001))
summation_20_mult = sc.accumulator(0)
def conditional_print(i):
if i % 20 == 0:
summation_20_mult.add(i)
data.foreach(conditional_print)
print 'Summation of multiple of 20 from 1 to 1000: ', summation_20_mult.value
Links:
In [ ]: