1
我有這段代碼:映射一個RDD的值,以他們的字典中的值
List tmp = colRDD.collect();
int ctr = 0;
for(Object o : tmp){
if (!dictionary.containsKey(o)) {
dictionary.put(o, ctr++);
}
}
revDictionary = dictionary.entrySet().stream()
.collect(Collectors.toMap(Entry::getValue, c -> c.getKey()));
colRDD = colRDD.map(x -> {return dictionary.get(x);});
一開始,我兌現了RDD,並把每個值在哈希表,其中RDD值是關鍵。 然後,我簡單的想在RDD每個值映射到他們的字典值。 不過,我得到一個Task not serializable
錯誤。這是爲什麼 ?
我知道錯誤來自那裏。不過,爲什麼不這樣做。 – SpiderRico
增加了更多的細節來幫助理解發生的事情。 – ImDarrenG
@ImDarrenG答案是正確的,但是如果每次調用地圖時使用廣播都不發送字典將會很好 –