У меня есть один вопрос - как загрузить локальный файл (а не на HDFS, а не на S3) с помощью sc.textFile в PySpark.
Я прочитал эту статью, затем скопировал sales.csv
в master node локальный (а не HDFS), окончательно выполнив следующие
sc.textFile("file:///sales.csv").count()
но он возвращает следующую ошибку, говоря file:/click_data_sample.csv does not exist
Py4JJavaError: при вызове произошла ошибка г: org.apache.spark.api.python.PythonRDD.collectAndServe.: org.apache.spark.SparkException: Работа прерывается из-за срыва этапа: Задача 0 на этапе 3.0 не удалась 4 раза, последний сбой: потерянная задача 0.3 в стадии 3.0 (TID 10, ф-17х-хх-хх-xxx.ap-северо-восток-1.compute.internal): java.io.FileNotFoundException: Файл файла:/sales.csv не существует
Я пробовал file://sales.csv
и file:/sales.csv
, но оба они тоже потерпели неудачу.
Очень полезно дать мне добрый совет по загрузке локального файла.
Noted1:
- My envrionment - Amazon emr-4.2.0 + Spark 1.5.2.
- Все порты открыты.
Noted2:
Я подтвердил файл загрузки из HDFS или S3 работает.
Вот код загрузки из HDFS - загрузите csv, скопируйте в hdfs заранее, затем загрузите sc.textFile( "/path/at/hdfs" )
commands.getoutput('wget -q https://raw.githubusercontent.com/phatak-dev/blog/master/code/DataSourceExamples/src/main/resources/sales.csv')
commands.getoutput('hadoop fs -copyFromLocal -f ./sales.csv /user/hadoop/')
sc.textFile("/user/hadoop/sales.csv").count() # returns "15" which is number of the line of csv file
Вот код загрузки из S3 - запустите файл csv на S3 заранее, затем загрузите с помощью sc.textFile( "s3n://path/at/hdfs" ) с помощью "s3n://".
sc.textFile("s3n://my-test-bucket/sales.csv").count() # also returns "15"