【问题标题】:Passing typesafe config conf files to DataProcSparkOperator将类型安全配置 conf 文件传递​​给 DataProcSparkOperator
【发布时间】:2018-09-14 17:23:28
【问题描述】:

我正在使用 Google dataproc 提交 Spark 作业并使用 Google Cloud Composer 来安排它们。不幸的是,我面临着困难。

我依靠 .conf 文件(类型安全配置文件)将参数传递给我的 spark 作业。

我正在为气流数据过程使用以下 python 代码:

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文件。

【问题讨论】:

    标签: apache-spark airflow google-cloud-dataproc typesafe-config google-cloud-composer


    【解决方案1】:

    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 相同。这是每个作业属性的documentation。

    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 (documentation) 相同。同样,您需要使用字典。

    重要的是,如果您在集群级别指定属性,则需要在它们前面加上要添加属性的配置文件。如果您使用spark:foo=bar,这意味着将foo=bar 添加到/etc/spark/conf/spark-defaults.conf。 yarn-site.xml等也有类似的前缀。

    3) 在集群级别使用您的 .conf 文件

    如果您不想将.conf 文件转换为字典,也可以在创建集群时使用initialization action 将其附加到/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
    

    请注意,您要追加而不是替换现有的配置文件,以便您只覆盖您需要的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 2018-07-10
      • 2012-04-03
      相关资源
      最近更新 更多