簡體   English   中英

mapPartition Spark中的調用函數

[英]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的分區是否為非空,但仍然沒有進行函數調用。 為什么此代碼不起作用? 我想為每個分區調用此函數,我該怎么做?

您只有在執行某些操作時才能觸發計算。

最后collectcountforeach等以觸發評估

通知收尾

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM