我正在尝试用Spark了解MapReduce 在做一些简单的练习时,我没有问题,按顺序进行,但是当我将代码并行化时,我遇到了困难。
考虑以下示例:
var = "Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts."
k = 10;
for x in range(0, len(var)):
print(var[0+x:k+x])
将文本拆分为10个字符(w-shingling)的带状疱疹 使用Spark将其“转换”为并行代码的正确方法是什么?
如何编码for loop
? Spark还提供循环吗?
我只需了解整个概念。
PS:我已经阅读了文档,我知道什么是RDD等等。我只是不知道,如何将顺序代码“转换”成并行。答案 0 :(得分:0)
您可能已经阅读过,Spark拥有丰富的功能API。 RDD操作分为transformations
和actions
,其中transformations
可视为采用RDD并生成RDD的函数:f(RDD) => RDD
和作为函数的动作在Array[T]
的情
关于如何将某个算法移植到Spark的一般想法是找到一种方法来表达所述算法,使用Spark支持的功能范例,通过组合转换和动作来实现所需的结果。
依赖于序列的算法,如上面的w-shing,提出了并行化的挑战,因为有时难以表达的元素顺序的隐式依赖是这样的可以在不同分区中运行的方式。
在这种情况下,我使用索引作为保留序列的方法,同时可以根据转换表达算法:
collect
Spark-shell示例:
Unit