我有一个接受数组RDD的函数。由于我需要并行调用此函数多次,因此我想到了使用RDD的RDD(RDD [Rdd [array]]),但是意识到不可能创建RDD的RDD。所以我创建了RDD的列表,但不知道如何为列表的每个元素并行调用该函数。
PFB代码段:
def function(x) //x is RDD[array]
result=prediction(x)
listRDD.map(lambda t : function(t)) //I want something equivalent to this
有什么办法可以并行化吗?可能是并行集合(用于scala,但不确定pyspark是否可用)是一种方法,但我不知道从哪里开始
答案 0 :(得分:0)
如果listRDD是python列表,则可以
for rdd in listRDD:
rdd = rdd.map(f)
通常认为,拥有rdd / dataframe的python列表是一种可怕的想法
您应该改用union
创建您的第一个rdd,然后使用firstrdd = firstrdd.union(newrdd)
确保它们都具有相同的架构,并且列的顺序也相同(使用.select()最终对列重新排序)