2017-10-15 83 views
1

的成員這是我的整個樣本代碼:值查找不org.apache.spark.rdd.RDD

package trouble.something 

import org.apache.spark.SparkConf 
import org.apache.spark.SparkContext 
import org.apache.spark.rdd.RDD 

object Stack { 
    val conf = new SparkConf().setMaster("local[*]").setAppName("app") 
    val sc = new SparkContext(conf) 

    def ExFunc[Int](looku: RDD[(Int, Long)]) { 
    val ke = 3 
    looku.lookup(ke); 
    } 

    def main(args: Array[String]){ 
    val pi: RDD[(Int, Long)] = sc.parallelize(Seq((1, 9L), (2, 11L))) 
    pi.lookup(3) 

    val res = ExFunc[Int](pi) 
    } 
} 

當我執行下面的行,它正確執行沒有任何錯誤,並且產生輸出

pi.lookup(3) 

但是,當我通過pi的功能,如下使用lookup,然後我得到一個錯誤

val res = ExFunc[Int](pi) 

傳遞pi以下功能

def ExFunc[Int](looku: RDD[(Int, Long)]) { 
    val ke = 3 
    looku.lookup(ke); 
} 

然後我收到此錯誤信息:

Error:(27, 11) value lookup is not a member of org.apache.spark.rdd.RDD[(Int, Long)] 
    looku.lookup(ke); 

任何人可以幫助我修正這個錯誤

回答

4

的功能不應該是通用的。只是刪除類型參數

def ExFunc(looku: RDD[(Int, Long)]) { 
    val ke = 3 
    looku.lookup(ke); 
} 

要創建的通用功能提供ClassTag,例如

import scala.reflect.ClassTag 

def ExFunc[T : ClassTag](looku: RDD[(T, Long)], ke: T) { 
    looku.lookup(ke); 
} 
+1

相當最近看到類似的事情,但答案是有'ExFunc'返回兩個參數組的功能'RDD '和'ke'分開。你對這種方法有什麼看法? –