Spark - Папка с тем же именем, что и текстовый файл, автоматически созданный после СДР? - PullRequest
0 голосов
/ 04 мая 2018

Я поместил текстовый файл с именем Linecount2.txt в hdfs и построил простой rdd для подсчета количества строк, используя spark.

val lines = sc.textFile("user/root/hdpcd/Linecount2.txt")
lines.count()

Это работает.

Но когда я попытался использовать тот же текстовый файл с указанным выше путем, я получаю сообщение об ошибке:

 "org.apache.hadoop.mapred.InvalidInputException: Input path does not exist:"

Когда я посмотрел по этому пути, я увидел, что была создана папка 'Linecount.txt'. Поэтому путь к файлу теперь

("user/root/hdpcd/Linecount2.txt/Linecount2.txt") 

Затем, после определения пути, я смог его успешно запустить.

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

Когда я прошел путь,

enter image description here

Почему это происходит?

1 Ответ

0 голосов
/ 04 мая 2018

Существует разница между размещением файла HDFS на user/root/hdpcd/Linecount2.txt по сравнению с /user/root/hdpcd/Linecount2.txt (или, проще, hdpcd/Linecount2.txt, когда вы уже являетесь пользователем root)

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

Вы не дали команду hdfs put, но проблема здесь заключается просто в разнице между абсолютным и относительным путями. И это не Spark, в частности, это проблема

Кроме того, hdfs put скажет, что файл уже существует, если вы попытаетесь разместить его в том же месте, поэтому тот факт, что вы смогли загрузить дважды, должен указывать на то, что ваш путь был неверным

...