2015-05-14 62 views
0

我正在写一个火花应用程序,并使用sbt程序集来创建一个胖的jar,我可以发送到spark-submit(通过Amazon EMR)。 我的应用程序使用typesafe-config,在resources目录中使用reference.conf文件。 我的jar文件位于Amazon S3上,我使用命令aws emr add-steps..创建一个新的spark作业(将jar下载到群集并将其发送到spark-submit)。 我知道一般情况下,我可以使用application.conf覆盖设置。然而,因为我使用的是火花(和一个胖罐子),我需要一些方法来部署我的覆盖。覆盖配置设置时,使用EMR上的火花的脂肪罐

使用spark时覆盖应用程序配置设置的推荐方式是什么?

回答

3

可以使用火花提交... --conf my.app.config.value = 50 --conf配置。 file = other.conf ... fat.jar

使用typesafe.config.ConfigFactory.load()时,命令行中指定的值将覆盖'other.conf'中指定的值,该值反过来覆盖在'fat.ar'中的'reference.conf'。

0

在我的火花的Java代码我写这样的重写应用程序配置

SparkConf sparkConf = new SparkConf(); 
    sparkConf.setMaster(sparkMaster); 
    sparkConf.set("spark.executor.memory", "1024M"); 

    sparkConf.set("spark.default.parallelism", "48"); 
    sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); 
    JavaSparkContext ctx = new JavaSparkContext(sparkConf); 
+0

嗨Sandesh,我不需要重载火花的配置。我的应用程序还有一个配置文件(reference.conf),它被包装在一个包含所有其余资源(当我使用sbt程序集)的胖jar中。 有时我想覆盖配置中的其中一个设置。 我可以这样做,如果我将这个设置写入一个名为application.conf的新文件,因为它在类型安全配置中受支持。但是,由于应用程序正在使用'aws emr add-steps..'激活,因此无法看到application.conf。 – dvir

+0

也就是说,如果我在reference.conf中设置了这个设置:'“age = 18',如何在不创建新的胖罐的情况下将其重写为21? – dvir