Передача конфиденциальных конфигурационных файлов конфигурации в DataProcSparkOperator - PullRequest
0 голосов
/ 14 сентября 2018

Я использую Google dataproc для отправки заданий на спарк и Google Cloud Composer для их планирования. К сожалению, я сталкиваюсь с трудностями.

Я полагаюсь на .conf файлы (типовые безопасные файлы конфигурации) для передачи аргументов в мои искровые задания.

Я использую следующий код Python для DataCroc воздушного потока:

t3 = dataproc_operator.DataProcSparkOperator(
   task_id ='execute_spark_job_cluster_test',
   dataproc_spark_jars='gs://snapshots/jars/pubsub-assembly-0.1.14-SNAPSHOT.jar',
   cluster_name='cluster',
   main_class = 'com.organ.ingestion.Main',
   project_id='project',
   dataproc_spark_properties={'spark.driver.extraJavaOptions':'gs://file-dev/fileConf/development.conf'},
   scopes='https://www.googleapis.com/auth/cloud-platform', dag=dag)

Но это не работает, и я получаю некоторые ошибки.

Может ли кто-нибудь помочь мне с этим?
По сути, я хочу иметь возможность переопределить файлы .conf и передать их в качестве аргументов моему DataProcSparkOperator.
Я тоже пытался сделать

arguments=`'gs://file-dev/fileConf/development.conf'`: 

но это не учитывало файл .conf, упомянутый в аргументах.

1 Ответ

0 голосов
/ 17 сентября 2018

tl; dr Вам нужно превратить ваш development.conf файл в словарь для передачи на dataproc_spark_properties.

Полное объяснение:

Существует два основных способа задания свойств -на уровне кластера и на уровне задания.

1) Уровень задания

Похоже, вы пытаетесь установить их на уровне задания: DataProcSparkOperator(dataproc_spark_properties={'foo': 'bar', 'foo2': 'bar2'}).Это так же, как gcloud dataproc jobs submit spark --properties foo=bar,foo2=bar2 или spark-submit --conf foo=bar --conf foo2=bar2.Вот документация для свойств каждого задания.

Аргументом spark.driver.extraJavaOptions должны быть аргументы командной строки, которые вы передадите java.Например, -verbose:gc.

2) Уровень кластера

Вы также можете установить свойства на уровне кластера, используя DataprocClusterCreateOperator(properties={'spark:foo': 'bar', 'spark:foo2': 'bar2'}), что совпадает с gcloud dataproc clusters create --properties spark:foo=bar,spark:foo2=bar2 ( документация).Опять же, вам нужно использовать словарь.

Важно, что если вы указываете свойства на уровне кластера, вам необходимо добавить к ним префикс, с каким файлом конфигурации вы хотите добавить свойство.Если вы используете spark:foo=bar, это означает добавление foo=bar к /etc/spark/conf/spark-defaults.conf.Существуют аналогичные префиксы для yarn-site.xml и т. Д.

3) Использование файла .conf на уровне кластера

Если вы не хотите превращать файл .conf всловарь, вы также можете просто добавить его к /etc/spark/conf/spark-defaults.conf, используя действие инициализации при создании кластера.

Например (это не проверено):

#!/bin/bash
set -euxo pipefail

gsutil cp gs://path/to/my.conf .
cat my.conf >> /etc/spark/conf/spark-defaults.conf

Обратите внимание, что вы хотите добавить, а не заменить существующий файл конфигурации, просто чтобы переопределить только те конфигурации, которые вам необходимы.

...