[英]Calling function in mapPartition Spark
我有一個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的分區是否為非空,但仍然沒有進行函數調用。 為什么此代碼不起作用? 我想為每個分區調用此函數,我該怎么做?
您只有在執行某些操作時才能觸發計算。
最后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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.