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))
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 [3]:
data = sc.parallelize(range(1, 1001))
print ('data first 10: ', data.take(10))
In [8]:
data = sc.parallelize(range(1, 11))
# sampling with replacement
print (data.takeSample(True, 4))
# sampling without replacement
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 [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.
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)
Links:
In [ ]: