2015-01-20 37 views
0

我是一個scala新手,很難與簡單的代碼行。我做一個.groupBy操作並關閉「它」,但編譯器抱怨「缺少參數類型」,我不知道如何解決它。這裏是確切的代碼(這是一個不同的網絡上,所以我必須重新輸入 - 請原諒拼寫錯誤):「缺少參數類型」in groupBy

val rddSAInCache: RDD[Map[String, Any]] = getCache(SAInCacheExported, rddconfig) 
    .filter(it => it.path(EventType).getOrElse(NONE) == "SAInCache") 
    .map(it => 
    Map(
     ("SAInCache" -> it.path(Time).getOrElse(NONE)), 
     (RequestID -> it.path(RequestID).getOrElse(NONE)) 
    ) 
) 
    .groupBy(it => it.path(RequestID.getOrElse(NONE)) 

編譯器能夠推斷「它」是一個Map [字符串,任何在這兩種過濾器和地圖,但不是groupBy。爲什麼??

+0

'groupBy'在'map'之後,所以'it'就是'Map',它沒有'.path'方法。所以也許這是一個真正的錯誤,編譯器只是混淆試圖推斷一個不適合的代碼類型? – lmm 2015-01-20 22:29:11

+0

我們增強了Map以具有路徑方法。這不是問題。 – user1660256 2015-01-20 22:33:01

回答

2

一個多回答一個建議的:

嘗試拆分鏈式調用:

val foo = rdd map f 
val bar = foo groupBy g 

獲取在REPL foo的類型。

您正在要求它解決地圖的結果類型,該地圖與MapBy一起被重載並帶有隱含意義。

不知道太多關於API,如果一個類型參數是不可猜測的,它不會讓我感到驚訝。

+0

這就是我最終做的,分裂了鏈條。謝謝! – user1660256 2015-01-20 23:40:02