2015-05-14 72 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