java.io.FileNotFoundException для файла, отправляемого в Spark-submit --files - PullRequest
0 голосов
/ 11 января 2019

В моем приложении spark у меня есть файл свойств, который мне нужен для инициализации таких вещей, как соединения с базой данных и другая бизнес-логика и т. Д. Когда я отправляю задание spark в режиме кластера, я вижу, что этот файл загружен, но когда я проверяю, существует ли файл , Я получаю false и файл не найден во время инициализации:

spark2-submit \
--class "com.packageName.MyApp" \
--files MyProject/config/configFile.properties  \
--master yarn --num-executors 2 \
--executor-cores 2 --deploy-mode cluster \
myapp-assembly-0.1.jar configFile.properties

И вижу в логах:

19/01/11 10:21:15 INFO yarn.Client: Uploading resource file:/home/dexter/MyProject/lib/myapp-assembly-0.1.jar -> hdfs://XXXXXXX.com:8020/user/dexter/.sparkStaging/application_1541792367360_580444/myapp-assembly-0.1.jar
19/01/11 10:21:19 INFO yarn.Client: Uploading resource file:/home/dexter/MyProject/config/configFile.properties -> hdfs://XXXXXXX.com:8020/user/dexter/.sparkStaging/application_1541792367360_580444/configFile.properties

И в коде для инициализации файла:

val configFileSpark = SparkFiles.get(args(0))
println(configFileSpark)  
// /vol10/yarn/nm/usercache/dexter/appcache/application_1541792367360_580444/spark-3dec2688-a749-44eb-a7d6-ecded2ec5111/userFiles-c6ed268c-e847-4ffd-a5cf-f7956357ac4f/configFile.properties

val configFile = new File(configFileSpark)
println("File exists: " + configFile.exists())    
// false

val props = new Properties();
props.load(new FileInputStream(configFile.getAbsolutePath()));
// java.io.FileNotFoundException: /vol10/yarn/nm/usercache/dexter/appcache/application_1541792367360_580444/spark-3dec2688-a749-44eb-a7d6-ecded2ec5111/userFiles-c6ed268c-e847-4ffd-a5cf-f7956357ac4f/configFile.properties (No such file or directory)

Я действительно не понимаю, как получить этот файл и использовать его для инициализации. Любое решение, кроме загрузки файла свойств в HDFS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...