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答案是正确的,但是如果每次调用地图时使用广播都不发送字典将会很好 –