Apache Spark submit --files java .io.FileNotFoundException - PullRequest
0 голосов
/ 18 марта 2020

У меня есть скрипт spark, который читает содержимое файла spark.read.textFile(filePath) Я запускаю его из контейнера самого мастера и пытаюсь передать этот файл с параметром --files, таким как

./spark-submit --class nameOfClass --files local/path/to/file.csv --master spark://master_ip generated_executable.jar local/path/to/file.csv`

Но тогда я получаю ошибку

java.io.FileNotFoundException: File file:/local/path/to/file.csv does not exist

Я попытался изменить строку на: spark.read.textFile(SparkFiles.get(fileName))

, но ошибка не исчезла, теперь она говорит

java.io.FileNotFoundException: File file:/mnt/mesos/sandbox/spark-946bbaef-a258-4951-9b15-bec77b78bf5d/userFiles-3f9dcf85-4114-4968-b625-6bb1498f568d/file.csv does not exist

Если Я вручную добавляю файл каждому работнику, он работает. Но я не хочу этого делать. Есть ли способ передать файл из контекста, в котором он отправляет задание?

1 Ответ

0 голосов
/ 18 марта 2020

одна хорошая альтернатива - поместить файл csv в hdfs. тогда вам не нужно заботиться о файле, находящемся у каждого исполнителя. Я не думаю, что это обычная схема передачи файла в вызов spark-submit для его чтения.

при условии, что он расположен в hdfs://tmp/file.csv, вы можете прочитать его, кодировав

spark.read.textFile ("/ tmp / file.csv")

, что дает возможность обойтись без передачи файла через --files полностью


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

file: /local/path/to/file.csv

я надеюсь, что это поможет

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