मैं स्केल/स्पार्क का उपयोग कर एक एचडीएफएस निर्देशिका के भीतर सभी फ़ोल्डरों को सूचीबद्ध करना चाहता हूं। Hadoop में मैं आदेश का उपयोग करके ऐसा कर सकते हैं: hadoop fs -ls hdfs://sandbox.hortonworks.com/demo/
निर्देशिका में स्पार्क स्कैला सूची फ़ोल्डर्स
मैं के साथ इसे करने की कोशिश:
val conf = new Configuration()
val fs = FileSystem.get(new URI("hdfs://sandbox.hortonworks.com/"), conf)
val path = new Path("hdfs://sandbox.hortonworks.com/demo/")
val files = fs.listFiles(path, false)
लेकिन यह प्रतीत नहीं होता है कि वह Hadoop निर्देशिका में लगता है जैसे मैं अपने फ़ोल्डर्स/फ़ाइलें नहीं मिल रहा।
मैं भी साथ की कोशिश की:
FileSystem.get(sc.hadoopConfiguration).listFiles(new Path("hdfs://sandbox.hortonworks.com/demo/"), true)
लेकिन यह भी मदद नहीं करता है।
क्या आपके पास कोई अन्य विचार है?
पीएस: मैंने यह धागा भी देखा: Spark iterate HDFS directory लेकिन यह मेरे लिए काम नहीं करता है क्योंकि यह केवल hdma निर्देशिका पर खोज नहीं प्रतीत होता है, बल्कि स्कीमा फ़ाइल // के साथ स्थानीय फ़ाइल सिस्टम पर।
धन्यवाद एक बहुत है अपने उपनिर्देशिका
org.apache.hadoop.fs.LocatedFileStatus
से अधिक, listStatus ज्यादा फ़ोल्डरों प्राप्त करने के लिए बेहतर है और अच्छी तरह से काम करता है! मेरे मामले में मुझे एक रिकर्सिव लुकअप की आवश्यकता नहीं है, इसलिए यह बिल्कुल ठीक है। ** एक जोड़ा **: जब मैं आपके कोडिंग का उपयोग कर रहा हूं, फाइल सिस्टम स्कीमा फ़ाइल है: // और मैं hdfs: // स्कीमा के रूप में उपयोग नहीं कर सकता। इसलिए मैंने फाइल सिस्टम को इस तरह बनाया: 'वैल conf = नया कॉन्फ़िगरेशन() वैल fs = FileSystem.get (नया यूआरआई ("hdfs: //sandbox.hortonworks.com/"), conf)। फिर फाइल सिस्टम एचडीएफएस: // पथ स्वीकार करता है। – AlexL