Hadoop FileUtils не может записывать файлы в локальную (Unix) файловую систему из Scala - PullRequest
2 голосов
/ 31 мая 2019

Я пытаюсь записать файл в локальный FileSystem, используя библиотеку FileSystem org.apache.hadoop.fs. Ниже мой однострочный код внутри большого скала-кода, который должен это делать, но это не так.

fs.copyToLocalFile(false, hdfsSourcePath, new Path(newFile.getAbsolutePath), true)

Значение newFile равно:

val newFile = new File(s"${localPath}/fileName.dat")

localPath - это просто переменная, содержащая полный путь на локальном диске. hdfsSourcePath - полный путь к папке HDFS.

Задание выполняется правильно, но я не вижу файлы, созданные на локальном компьютере. Я запускаю его через Spark движок в режиме cluster, поэтому я использовал метод copyToLocalFile, который перегружает 4-й аргумент useRawLocalFileSystem и устанавливал его на true. Используя это, мы можем избежать записи файлов на узел исполнителя.

Есть идеи?

1 Ответ

0 голосов
/ 03 июня 2019

Я использовал метод copyToLocalFile, который перегружает 4-й аргумент useRawLocalFileSystem и устанавливал для него значение true.Используя это, мы можем избежать получения файлов, записываемых на узле исполнителя.

Я думаю, что вы ошиблись в этом.В режиме кластера драйвер запускается на узле исполнителя, а локальная файловая система - это файловая система исполнителя.useRawLocalFileSystem только предотвращает запись файлов контрольных сумм (-> info ), но не заставляет файлы появляться на компьютере, отправляющем задание, что, вероятно, соответствует вашим ожиданиям.

ЛучшееВы можете сохранить файлы в HDFS и получить их явно после завершения задания.

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