Не удается прочитать файлы из hdfs в pyspark для Amazon EMR - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь сделать python программу для Amazon EMR, но я не могу читать файлы из hdfs в ней. Я делаю это так: Конфигурация кластера следующая: Релиз: emr-5.25.0, куст 2.3.5, spark 2.4.3

Сначала я запускаю сценарий оболочки с компьютера, не входящего в кластер, вот так:

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

Скрипт находится в корзине s3.

Скрипт выполняет некоторые проверки и копирует файлы из s3 в кластер следующим образом:

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)

Затем запускается скрипт python Программа выглядит так:

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

В python программе я делаю что-то вроде этого:

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) ничего не выводит, говоря: «[Errno 2] Нет такого файла или каталога».

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

...