पर चलते समय 'संसाधन' से फ़ाइलों तक कैसे पहुंचे, मैंने जावा में स्पार्क जॉब लिखा था। काम एक छायांकित जार के रूप में पैक किया जाता है और मार डाला:जावा में स्पार्क जॉब: क्लस्टर
spark-submit my-jar.jar
कोड में, कुछ फ़ाइलें (Freemarker टेम्पलेट्स) कि src/main/resources/templates
में रहते हैं। जब स्थानीय रूप से चलाने के लिए, मैं सक्षम पहुँच फ़ाइलों हूँ:
File[] files = new File("src/main/resources/templates/").listFiles();
जब काम एक क्लस्टर पर चलाया जाता है, एक अशक्त-सूचक अपवाद है जब पिछली लाइन निष्पादित किया जाता है लौटाया जाता है।
मैं देख सकता हूँ अगर मैं jar tf my-jar.jar
चलने वाले फ़ाइलों को एक templates/
फ़ोल्डर में पैक कर रहे हैं:
[...]
templates/
templates/my_template.ftl
[...]
मैं सिर्फ उन्हें पढ़ने में असमर्थ हूँ, मुझे संदेह है कि .listFiles()
क्लस्टर नोड पर स्थानीय फाइल सिस्टम तक पहुंचने का प्रयास करता है, और फाइलें वहां नहीं हैं।
मुझे यह जानकर उत्सुकता है कि मुझे स्वयं निहित स्पार्क नौकरी के भीतर फ़ाइलों का उपयोग कैसे करना चाहिए। मैं उन्हें नौकरी के बाहर एचडीएफएस में कॉपी नहीं करना चाहूंगा क्योंकि यह बनाए रखने के लिए गन्दा हो जाता है।
क्या आप बता सकते हैं कि आपका मास्टर क्या है? और आप किस तैनाती मोड का उपयोग कर रहे हैं? – user1314742