我有一个用java编写的非常小的spark应用程序,我正试图使用它在k8s集群中运行 spark-submit
. 我用spark二进制文件构建了一个映像,这是我的uberjar文件,包含了所有必要的依赖项(在 /opt/spark/jars/my.jar
),以及一个配置文件(在 /opt/spark/conf/some.json
).
在我的代码中,我从
SparkSession session = SparkSession.builder()
.appName("myapp")
.config("spark.logConf", "true")
.getOrCreate();
Path someFilePath = FileSystems.getDefault().getPath("/opt/spark/conf/some.json");
String someString = new String(Files.readAllBytes(someFilePath));
得到这个例外 readAllBytes
来自spark驱动程序:
java.nio.file.NoSuchFileException: /opt/spark/conf/some.json
如果我手动运行docker映像,我肯定可以看到该文件 /opt/spark/conf/some.json
如我所料。我的spark作业以root用户身份运行,因此文件权限应该不是问题。
我一直在假设,由于相同的docker映像,文件确实存在,将用于启动驱动程序(和执行程序,但我甚至没有达到这一点),该文件应该对我的应用程序可用。不是吗?为什么它看不到文件?
1条答案
按热度按时间disbfnqx1#
您似乎从一个工作节点而不是容器中获得了此异常。
确保已将所有需要的文件指定为
--files
的选项spark-submit
.https://spark.apache.org/docs/latest/submitting-applications.html#advanced-依赖关系管理