1
我還是新來的Scala上下文邊界,我試圖編寫一個函數,可以在任何滿足上下文綁定的泛型上執行reduceByKey。 如將spark reduceByKey應用於具有上下文邊界的泛型
def myReduce[K: ClassTag, V: ClassTag: Numeric[V]](in: RDD[(K, V)]): RDD[(K, V)] = {
in.reduceByKey{case (v1, v2) =>
implicityly[Numeric[V]].plus(v1, v2)
}
據我理解但是這應該工作試圖編譯我收到以下錯誤時。
- 錯誤:無法找到參數e內含價值:數字
- 錯誤:數字[V]不帶類型參數
這些我不明白。 我沒有在任何地方將類型參數傳遞給Numeric [V]。上下文綁定也不應該自動導入轉換的「證據」?
我希望改爲最終使用我自己的特質,而不是數字。
編輯:
我想明確的功能寫隱含evdience如下:
def myReduce[K: ClassTag, V: ClassTag](in: RDD[(K, V)])(implicit ev: V => Numeric[V]): RDD[(K, V)] = {
in.reduceByKey{case (v1, v2) =>
implicityly[Numeric[V]].plus(v1, v2)
}
但我仍然得到「錯誤:無法找到參數e內含價值:數字」錯誤。