2012-07-20 16 views
24

कैसे एक HDFS फ़ाइल के आकार को खोजने के लिए के आकार को खोजने के लिए? एचडीएफएस में किसी भी फाइल के आकार को खोजने के लिए किस कमांड का इस्तेमाल किया जाना चाहिए।कैसे एक HDFS फ़ाइल

उत्तर

17

आप मौजूदा निर्देशिका में फ़ाइलों के साथ ही उनके विवरण सूची hadoop fs -ls आदेश का उपयोग कर सकते हैं। कमांड आउटपुट में 5 वें कॉलम में बाइट्स में फ़ाइल का आकार होता है।

उदा। आदेश hadoop fs -ls input निम्नलिखित उत्पादन देता है:

Found 1 items 
-rw-r--r-- 1 hduser supergroup  45956 2012-07-19 20:57 /user/hduser/input/sou 

फ़ाइल sou का आकार 45,956 बाइट्स है।

+0

मानव पठनीय रूप में आकार को आप कैसे आउटपुट करेंगे? -LS - FS -du -s नए के लिए प्रतिकृति कारक संख्या अनुमतियाँ झंडे के बाद पता चला है, और (@ adhunavkulkarni के जवाब में 2 स्तंभ) मालिक से पहले –

27

मैं भी hadoop fs -dus <path> एक महान सौदा का उपयोग कर अपने आप को लगता है। उदाहरण के लिए, यदि नामित HDFS पर "/ उपयोगकर्ता/frylock/इनपुट" एक निर्देशिका 100 फ़ाइलें हैं और आप उन सभी फ़ाइलों के लिए कुल आकार की जरूरत है आप चला सकते हैं:

hadoop fs -dus /user/frylock/input 

और तुम वापस कुल आकार मिलेगा (बाइट्स में) "/ user/frylock/input" निर्देशिका में सभी फ़ाइलों का।

इसके अलावा, ध्यान रखें कि एचडीएफएस डेटा को अनावश्यक रूप से संग्रहीत करता है ताकि फ़ाइल द्वारा उपयोग किए जाने वाले वास्तविक भौतिक भंडारण hadoop fs -ls और hadoop fs -dus द्वारा रिपोर्ट की गई 3x या उससे अधिक हो।

+0

संस्करणों –

+3

Hadoop - lah यहाँ इसके अतिरिक्त पिछले बात करने के लिए काम नहीं करता है – serhanbaker

+17

उपयोग 'Hadoop FS -du -s -h/उपयोगकर्ता/frylock/एक और अधिक पठनीय उत्पादन के लिए input'। – axiom

2

आप एपीआई के माध्यम से यह करने के लिए चाहते हैं, आप 'getFileStatus()' विधि का उपयोग कर सकते हैं।

+0

यह सही नहीं है कि यह फ़ाइल आकार वापस नहीं लौटाता है, यह आवंटित ब्लॉक आकार लौटाता है जो खाली फ़ाइलों के लिए शून्य नहीं होगा। डिफ़ॉल्ट 67108864 है। – user1613360

10

मैंने नीचे दिए गए फ़ंक्शन का उपयोग किया जिसने मुझे फ़ाइल आकार प्राप्त करने में मदद की।

public class GetflStatus 
{ 
    public long getflSize(String args) throws IOException, FileNotFoundException 
    { 
     Configuration config = new Configuration(); 
     Path path = new Path(args); 
     FileSystem hdfs = path.getFileSystem(config); 
     ContentSummary cSummary = hdfs.getContentSummary(path); 
     long length = cSummary.getLength(); 
     return length; 
    } 
} 
+0

क्या आप कृपया मुझे बता सकते हैं कि यह 7906 लौटाता है तो उस निर्देशिका का आकार क्या है? क्या यह बाइट्स या केबीएस में है? – retiremonk

4

HDFS में उत्पादन फ़िल्टर्ड का आकार (जीबी में) को देखने के लिए awk स्क्रिप्ट के साथ नीचे आदेश देखें:

hadoop fs -du -s /data/ClientDataNew/**A*** | awk '{s+=$1} END {printf "%.3fGB\n", s/1000000000}' 

उत्पादन ---> 2.089GB

hadoop fs -du -s /data/ClientDataNew/**B*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}' 

उत्पादन ---> 1.724 जीबी

hadoop fs -du -s /data/ClientDataNew/**C*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}' 

आउटपुट ---> 0.986 जीबी

संबंधित मुद्दे