spark看不到本地文件

okxuctiv  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(456)

我有一个用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映像,文件确实存在,将用于启动驱动程序(和执行程序,但我甚至没有达到这一点),该文件应该对我的应用程序可用。不是吗?为什么它看不到文件?

disbfnqx

disbfnqx1#

您似乎从一个工作节点而不是容器中获得了此异常。
确保已将所有需要的文件指定为 --files 的选项 spark-submit .

spark-submit --master yarn --deploy-mode cluster --files <local files dependecies> ...

https://spark.apache.org/docs/latest/submitting-applications.html#advanced-依赖关系管理

相关问题