2015-07-29 10 views
15

मैं कॉन्फ़िगरेशन फ़ाइल के साथ यार्न-क्लस्टर मोड में चल रहे स्पार्क नौकरी को पैरामीटर करने के लिए टाइपएफ़ कॉन्फ़िगर, https://github.com/typesafehub/config का उपयोग कर रहा हूं। Typesafe कॉन्फ़िग के डिफ़ॉल्ट व्यवहार को एक regex मिलान नाम के साथ संसाधनों के लिए classpath खोज करने के लिए और ConfigFactory.load() साथ स्वचालित रूप से आपके विन्यास वर्ग में उन्हें लोड करने के लिए (हमारे प्रयोजनों के लिए, फ़ाइल इसके लिए application.conf कहा जाता है लग रहा है मान लेते हैं) है।स्पार्क 1.2.0 में सभी स्पार्क निष्पादकों के वर्गपथ में कॉन्फ़िगरेशन फ़ाइल कैसे जोड़ें?

मैं --driver-class-path <directory containing configuration file> का उपयोग कर चालक में कॉन्फ़िगरेशन फ़ाइल लोड करने में सक्षम हूँ, लेकिन --conf spark.executor.extraClassPath=<directory containing configuration file> का उपयोग कर की तरह यह होना चाहिए सभी निष्पादकों के classpath पर संसाधन डाल नहीं है। निष्पादक रिपोर्ट करते हैं कि उन्हें उस कुंजी के लिए एक निश्चित कॉन्फ़िगरेशन सेटिंग नहीं मिल सकती है जो कॉन्फ़िगरेशन फ़ाइल में मौजूद है जिसे मैं अपने क्लासपाथ में जोड़ने का प्रयास कर रहा हूं।

स्पार्क का उपयोग कर सभी निष्पादक JVMs के क्लासपाथ में फ़ाइल जोड़ने का सही तरीका क्या है?

उत्तर

15

यह spark.executor.extraClassPath संपत्ति के मूल्य की तरह लग रहा निष्पादक पर आवेदन की कार्यशील निर्देशिका के सापेक्ष है।

तो, यह संपत्ति को सही ढंग से उपयोग करने के लिए, एक पहला प्रत्यक्ष स्पार्क को --files <configuration file> उपयोग करने वाले सभी निष्पादकों का काम कर निर्देशिका में फाइल को कॉपी करने के लिए करना चाहिए, तो spark.executor.extraClassPath=./ का उपयोग अपने classpath को निष्पादक की कार्यशील निर्देशिका जोड़ने के लिए। इस संयोजन के परिणामस्वरूप निष्पादक कॉन्फ़िगरेशन फ़ाइल से मान पढ़ने में सक्षम होता है।

+0

का उपयोग मामले में आप कोड के माध्यम से यह कर रहे हैं, यहाँ snippet- वैल conf = नए SparkConf()। सेट ("spark.files", "test.conf है ") .set (" spark.executor.extraClassPath "," ./ ") जहां test.conf फ़ोल्डर में रखा जाता है जहां मैं जार निष्पादित करता हूं –

3

मैं SparkContext addFile विधि

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 
} 
संबंधित मुद्दे