Spark代码运行时间太长

时间:2016-04-14 10:58:58

标签: python apache-spark pyspark bigdata

我有一个代码页需要花费数小时才能运行,我希望不会超过几分钟。我跑边看着控制台,看起来特别挂在这个部分

def getListComponents(p):
    pair = []
    for i in range(len(p)):
        pair.append((i, p[i]))
    return pair

def addPoints(p1, p2):
    summedPoint = []
    for i in range(len(p1)):
        summedPoint.append(p1[i] + p2[i])
    return summedPoint

for i in range(len(newCentroids)): # len(newCentroids) = 4
    (cnumerator
        .append(wTmx.map(lambda p: getListComponents(p))
        .map(lambda  p: p[i])
        .reduceByKey(lambda p1, p2 : addPoints(p1, p2))))

我已经读到增加内存可能会有所帮助,我已经尝试过2gs到4gs,但看不到任何改进。

--executor-memory=3g

我还读到,更改默认并行性可以提供帮助,每台机器设置2-3个是理想的(我正在运行三个集群)

--default-parallelism=9

但这没有效果。

所以现在我假设问题在于我显然无法编写有效的代码。有没有办法让我改变这个代码来做同样的事情(整个程序按预期工作),但是花费的时间少得多?

感谢。

0 个答案:

没有答案