#python #hadoop #hdfs
Вопрос:
Я запускаю hadoop на своем локальном компьютере на порту 8020. Узлы с моим именем существуют в разделе путь /usr/local/Cellar/hadoop/hdfs/tmp/dfs/name
. Я настроил проект PySpark с помощью Conda env и установил зависимости pyspark и hdfs3.
Ниже приведен мой код:
from pyspark.sql import SparkSession
from hdfs3 import HDFileSystem
spark = SparkSession.builder.appName('First Project').getOrCreate()
hdfs = HDFileSystem(host="localhost", port=8020)
hdfs.put("test.csv", "/usr/local/Cellar/hadoop/hdfs/tmp/dfs/name/test.csv")
Я пытаюсь скопировать файл из моей локальной файловой системы в HDFS, но получаю следующую ошибку:
OSError: Could not open file: /usr/local/Cellar/hadoop/hdfs/tmp/dfs/name/test.csv, mode: wb Parent directory doesn't exist: /usr/local/Cellar/hadoop/hdfs/tmp/dfs/name
Но я могу вставить компакт — диск в тот же каталог, и он существует. Я не уверен, почему я получаю эту ошибку.
Кроме того, когда я пытаюсь сделать hdfs.mv с теми же параметрами я получаю следующую ошибку:
FileNotFoundError: test.csv
Комментарии:
1.
hdfs3
не имеет никакого отношения к искре. Вы также не должны помещать свой каталог данных DFS в путь homebrew
Ответ №1:
Если вы хотите загрузить локальный CSV с помощью Spark, вам нужно будет использовать Spark
spark = SparkSession.builder.getOrCreate()
df = spark.read.csv('file:///path/to/file.csv')
df.write.csv(output_path)
В противном случае вы не сможете «поместить» в свое местоположение Homebrew, поскольку его нет в HDFS (по крайней мере, если вы не запустили hadoop fs mkdir -p /usr/local/Cellar/...
по какой-либо причине)
когда я пытаюсь сделать hdfs.mv с теми же параметрами … Файлообменник
Потому что сначала вам нужно перейти cd
в каталог с локальным CSV. В противном случае укажите полный путь