我有一个scala函数如下:
def variance (reg: Int, samRecords: Array[SAMRecord]) :
Array[(Int, (Int, String))] =
{
// Body of the function
}
我试图在mapPartition方法中调用此函数,如下所示:
//SortedOut is RDD[(Int,(Int,Int,SAMRecord))]
val Out = SortedOut.mapPartitions(iter=> {val inArr = iter.map(x=>x._2._3).toArray
val inReg = iter.map(x=> x._1).toArray
if (inArr.length != 0)
{
println("Calling function")
variantCall(inReg(0),inArr).iterator
}
else
iter}).cache
我已经检查过SortedOut是否有非空分区,但仍然没有进行功能调用。为什么这段代码不起作用?我想为每个分区调用此函数,我该怎么做?
答案 0 :(得分:2)
只有在执行某些操作时才能触发计算。
在结尾处collect
或count
或foreach
等来触发评估
最后收集通知
val Out = SortedOut.mapPartitions(iter=> {val inArr = iter.map(x=>x._2._3).toArray
val inReg = iter.map(x=> x._1).toArray
if (inArr.length != 0)
{
println("Calling function")
variantCall(inReg(0),inArr).iterator
}
else
iter}).cache.collect