【问题标题】:How to load extra spark properties using --properties-file option in spark yarn cluster mode?如何在火花纱线集群模式下使用 --properties-file 选项加载额外的火花属性?
【发布时间】:2017-08-15 22:28:02
【问题描述】:

我在纱线集群模式下使用 spark-submit 运行 spark 作业。为了在运行时提交输入和输出文件路径,我试图加载一个包含输入和输出路径的属性文件。

属性文件:input.properties

spark.myapp.input /输入/路径 spark.myapp.output /输出/路径

我正在使用以下命令运行我的应用程序。

 `spark-submit --class Property --master yarn-cluster prop.jar --properties-file input.properties`

Scala 代码:

导入 org.apache.spark.SparkConf 导入 org.apache.spark.SparkContext 导入 java.io.FileInputStream 导入集合.JavaConversions._ 导入 java.util.Properties; 对象属性 { def main(args: Array[String]) { val conf = new SparkConf().setAppName("myApp"); val sparkContext = new SparkContext(conf); val input=sparkContext.getConf.get("spark.myapp.input") 打印输入(输入) sparkContext.stop; } }

当我在本地和纱线客户端模式下运行我的程序时,我能够访问这些属性。但是在 spark-submit 模式下,我遇到了异常。

错误 yarn.ApplicationMaster:用户类抛出异常:java.util.NoSuchElementException:spark.myapp.input

【问题讨论】:

    标签: scala apache-spark hadoop-yarn


    【解决方案1】:

    如果您使用纱线,请使用--files input.properties。我有同样的问题,它解决了我的问题。

    【讨论】:

    • 你是如何在你的 spark 代码中读取通过 --files , 发送的文件
    【解决方案2】:

    我使用 --files 和 --driver-class-path 参数来读取在 remove Yarn 集群上执行的驱动程序的属性。

    spark-submit \
        --class com.acme.Main \
        --master yarn \
        --deploy-mode cluster \
        --driver-memory 2g \
        --executor-memory 1g \
        --driver-class-path "./conf" \
        --files "./conf/app.properties,./conf/log4j.properties" \
        ./lib/my-app-uber.jar \
        "$@"
    

    请注意,可以使用逗号分隔的字符串指定多个属性文件(不要忘记引号)

    然后,您的驱动程序代码可以将这些属性文件加载为类路径资源,就像它在本地运行一样。

    【讨论】:

      猜你喜欢
      • 2014-12-17
      • 2016-10-11
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 2018-02-19
      • 2018-02-15
      相关资源
      最近更新 更多