2015-07-29 16 views
15

Bir yapılandırma dosyası ile iplik küme modunda çalışan bir Spark işini parametrelemek için Typesafe Config, kullanıyorum. Typesafe Config'in varsayılan davranışı, bir regex ile eşleşen isimlere sahip kaynakların sınıf yolunu aramak ve bunları ConfigFactory.load() ile otomatik olarak yapılandırma sınıfınıza yüklemek (bizim amacımız için, aradığı dosyanın application.conf olarak adlandırıldığını varsayalım).Spark 1.2.0 içindeki tüm Spark uygulayıcılarının sınıf yollarına yapılandırma dosyası nasıl eklenir?

Yapılandırma dosyasını --driver-class-path <directory containing configuration file> kullanarak sürücüye yükleyebiliyorum, ancak --conf spark.executor.extraClassPath=<directory containing configuration file> kullanmak, kaynağı, olması gerektiği gibi tüm yürütücülerin sınıf yoluna koymuyor. Yöneticiler, sınıf yollarına eklemeye çalıştığım yapılandırma dosyasında bulunan bir anahtar için belirli bir yapılandırma ayarı bulamadıklarını bildiriyorlar.

Spark kullanarak tüm yürütücü JVM'lerinin sınıf yollarına dosya eklemenin doğru yolu nedir?

cevap

15

spark.executor.extraClassPath özelliğinin değeri, EXECUTOR ON uygulamada çalışma dizinine göre görünür.

Bu özelliği doğru olarak kullanmak için, önce dosyayı tüm yöneticilerin çalışma dizinine kopyalamak için önce Spark'i --files <configuration file> kullanmalısınız, daha sonra yürütücünün çalışma dizinini sınıf yoluna eklemek için spark.executor.extraClassPath=./ kullanın. Bu kombinasyon, yürütücünün yapılandırma dosyasındaki değerleri okuyabilmesiyle sonuçlanır.

+0

kullanmak ") .set (" spark.executor.extraClassPath "," ./ ") test.conf'un jar'ı çalıştırdığım klasöre yerleştirildiği yer. –

3

Buraya, kodu aracılığıyla yapıyoruz(). Set ("spark.files", "test.conf snippet- val conf = new SparkConf olması durumunda SparkContext addFile yöntemini

val sc: SparkContext = { 
    val sparkConf = new SparkConf() 
    .set("spark.storage.memoryFraction", "0.3") 
    .set("spark.driver.maxResultSize", "10g") 
    .set("spark.default.parallelism", "1024") 
    .setAppName("myproject") 
    sparkConf.setMaster(getMaster) 
    val sc = new SparkContext(sparkConf) 
    sc.addFile("application.conf") 
    sc 
}