Я попытался запустить sc.texfile("file:///.../myLocalFile.txt")
на кластере, и я получил java.io.FileNotFoundException
на рабочих.
Так что я погуглил и нашел sc.addFile
/ SparkFiles.get
для загрузки файла каждому работнику.
Так вот мой код:
sc.addFile("file:///.../myLocalFile.txt")
val input = sc.textFile(SparkFiles.get("myLocalFile.txt"))
Я вижу, что узел драйвера загружает файл в каталог в /tmp
, а затем мои работники получают FileNotFoundException
, потому что:
- Я не вижу распечатки, в которой говорится, что работники загрузили файл в том виде, в котором они должны иметь
- Они пытаются получить доступ к файлу с помощью пути драйверов.Поэтому я предполагаю, что
SparkFiles.get()
запускается на узле драйвера, а не на рабочем (что я подтвердил, добавив println
).
Я попытался с опцией spark-submit --files
, и я вижу точно так жепроблема.
Так что я делаю не так?Все, что я хочу, это sc.textFile()
в кластере.