Ответ 1
Каждый node должен содержать целый файл. В этом случае локальная файловая система будет логически неотличима от HDFS по отношению к этому файлу.
Я только начинаю использовать Apache Spark (в Scala, но язык не имеет значения). Я использую автономный режим, и я хочу обработать текстовый файл из локальной файловой системы (поэтому ничего не распространяется, как HDFS).
Согласно документации метода textFile
из SparkContext
, он будет
Прочитайте текстовый файл из HDFS, локальной файловой системы (доступной на всех узлы) или любой поддерживаемый Hadoop файловой системой URI, и вернуть его как RDD строк.
Для меня непонятно, может ли весь текстовый файл быть скопирован во все узлы или если входные данные уже должны быть разделены, например, если использовать 4 узла и файл csv с 1000 строк, по 250 строк на каждом node.
Я подозреваю, что каждый node должен иметь весь файл, но я не уверен.
Каждый node должен содержать целый файл. В этом случае локальная файловая система будет логически неотличима от HDFS по отношению к этому файлу.
добавить file://
в локальный путь к файлу
Правильный способ использования - три слэша. Два для синтаксиса (например, http://) и один для точки монтирования файловой системы Linux, например sc.textFile(файл:///home/worker/data/my_file.txt). Если вы используете локальный режим, достаточно только файла. В случае автономного кластера файл должен быть скопирован на каждом node. Обратите внимание, что содержимое файла должно быть точно таким же, иначе искра возвращает смешные результаты.
Из справочной страницы Spark - Если вы не используете Hadoop/HDFS, "если вы запускаете на кластере, вам понадобится какая-то форма общей файловой системы (например, NFS, установленная по одному пути на каждом node). Если у вас есть этот тип файловой системы, вы можете просто развернуть Spark в автономном режиме."
искровым 1.6.1
Java-1.7.0_99
Узлы в кластере-3 (HDP).
Case 1:
Running in local mode local[n]
file:///..
и file:/..
читает файл из локальной системы
Case 2:
`--master yarn-cluster`
Input path does not exist: for file:/ and file://
И для file://
java.lang.IllegalArgumentException :Wrong FS: file://.. expected: file:///
Добавьте "файл:///" uri вместо "file://". Это решило проблему для меня.