В составе 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'