Local variable log defined in an enclosing scope must be final or effectively final
public JavaRDD<String> modify(JavaRDD<String> filteredRdd) { filteredRdd.map(log -> { placeHolder.forEach(text -> { //error comes here log = log.replace(text, ","); }); return log; }); return null; }
该消息确切地说明了问题所在:您的变量日志必须是最终的(即:携带关键字final)或者实际上是最终的(即:您只在lambda之外为其分配一个值).
否则,您不能在lambda语句中使用该变量.
但是,当然,这与您使用日志冲突.重点是:你不能在lambda中写一些外在的东西……所以你必须退后一步,为你想做的事情寻找其他方法.
从这个意义上讲:只要相信编译器.和侧节点:而不是在这里发布错误消息;您可以尝试先将其谷歌(这称为“先前的研究”,实际上是您希望做的事情).
翻译自:https://stackoverflow.com/questions/38402493/local-variable-log-defined-in-an-enclosing-scope-must-be-final-or-effectively-fi