Не могу прочитать файлы из hdfs в pyspark
От: Ilias  
Дата: 02.02.20 12:16
Оценка:
Пытаюсь поправить скрипт для pyspark в amazon emr и не получается читать из hdfs в нем.
Схема примерно такая:
С машины не в кластере запускается shell script:

aws emr add-steps ... --steps Type=CUSTOM_JAR .. Args=['s3://script.sh']


В нем внутри что-то типа такого — копирует данные снаружи в hdfs:

s3-dist-cp s3://some_file /mnt1/some_file
hdfs dfs -put /mnt1/some_file hdfs://home/hadoop/output/gzip
hdfs dfs -ls -h hdfs://home/hadoop/output/gzip (1)


Потом из него запускается программа на питоне:

spark-submit ... --master yarn --deploy-mode cluster s3://script.py



А внутри программы пытаюсь читать из hdfs:

if __name__=="main":

    subprocess.check_output("hdfs dfs -ls hdfs://home/hadoop/output/gzip") #(2)
    sc = SparkContext()
    f = sc.binaryFiles("hdfs://home/hadoop/output/gzip") #(3)
    f.keys().foreach(some_fn)



В (1) всё работает нормально, выдает файлы в hdfs. (3) тоже работает нормально, загружает их, параллелит итд.
Но почему-то не работает (2). Как я понимаю что скрипт, что (2), всё кроме some_fn запускается на master ноде. Пытаюсь поменять это тк тут данные из файлов не нужны, только имена, а binaryFiles, как я понял, загружают содержимое файлов в память и рассылают по нодам.
В спарке я не нашел способа получить просто имена файлов, только вместе с содержимым.
amazon emr pyspark spark python hdfs
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.