我在独立模式下使用spark 2.4.5和java 8,并将csv文件转换为spark数据集,如下所示:
sparkSession.read().csv("foo.csv").map((MapFunction<Row, MyBean>) row -> {
MyBean bean = new MyBean();
bean.setFoo(row.getAs("foo"));
bean.setBar(row.getAs("bar"));
return bean;
}, Encoders.bean(MyBean.class));
这个 MyBean
类包含一些用lombok生成的代码,这些代码是在另一个java项目中定义的,该项目在我的本地maven artifactory中可用。现在我改变了一些不相关的东西 MyBean
同学们,跑 mvn install
突然我有了一个 NoSuchMethodError
: setFoo
未定义。
我怀疑lombok生成的代码有问题,所以我对它进行了修改,但似乎什么都不起作用,直到我删除了包含 setFoo
在map函数中。奇怪,所以其他的二传手都没事,只有这一个不见了?所以我补充说 setFoo
再次,期待它失败,但令人惊讶的是,它的工作。
对我来说,似乎在这个map函数中一定有某种代码的缓存,当 MyBean
类改变了,Lombok山重新排列了所有的函数。通过更改map函数中的一些代码,我使缓存失效,从而修复了它。但是这个缓存是从哪里来的呢?spark是否在map函数中缓存代码?intellij在这么做吗?我真的需要能够测试的代码,我的工作,而不是一些旧的缓存版本。
1条答案
按热度按时间w1e3prcc1#
你应该考虑一下
-U
执行以下操作时的选项mvn install
命令。所以你想要的命令是mvn install -U
```-U,--update-snapshots Forces a check for missing
releases and updated snapshots on
remote repositories