Доступ к файлу в качестве аргумента для драйвера PySpark - Google Datapro c Jobs - PullRequest
1 голос
/ 13 апреля 2020

В составе PySpark Job на gcloud dataproc у нас есть несколько файлов, одним из которых является json, который передается в файл драйвера python. Сам файл драйвера находится в хранилище Google (файловая система GS).

Мы пытаемся отправить это задание, используя gcloud datapro c api для python.

Конфигурация, используемая для объекта задания в submit_job - это:

job_details = {
        'placement': {
            'cluster_name': cluster_name
        },
        'pyspark_job': {
            'main_python_file_uri': 'gs://driver_file.py',
            'python_file_uris':['gs://package.whl'],
            'file_uris':['gs://config.json'],
            'args':['gs://config.json']
        }
    }

Насколько я понимаю, config.json должно быть доступно для драйвера, что gcloud правильно делает из журналов - Downloading gs://config.json to /tmp/tmprandomnumber/fop_gcp_1.json

Из file_uris из страницы документации gcloud это кажется правильным -

URI-идентификаторы файлов HCFS для копирования в рабочий каталог Python драйверов и распределенных задач. Полезно для наивно параллельных задач.

Теперь после большой отладки мы наткнулись на SparkFiles.get('config.json'), который предназначен для получения файлов, которые были загружены в драйвер на основе этого вопроса

Но это также не работает с [Errno 2] No such file or directory: '/hadoop/spark/tmp/spark-random-number/userFiles-random-number/config.json'

1 Ответ

1 голос
/ 14 апреля 2020

Хорошо, разобрался, выложив его, чтобы он мог помочь кому-то там!

Используйте SparkContext.addFile -

Добавить файл в быть загруженным с этим заданием Spark на каждом узле.

SparkContext.addFile(config_file_name)

А затем простое

from pyspark import SparkFiles
SparkFiles.get(config_file_name)

Примечание. Все это можно сделать только после того, как SparkContext инициализирован в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...