2012-02-24 14 views
5

को कम करें मुझे पीडीएफ फाइलों का विश्लेषण करना होगा, जो एचडीएफएस में हैडोप में एक मानचित्र कम करने के कार्यक्रम में हैं। तो मुझे एचडीएफएस से पीडीएफ फाइल इनपुट विभाजन के रूप में प्राप्त करती है और इसे पार्स किया जाना चाहिए और मैपर क्लास को भेजना होगा। इस इनपुटफॉर्मेट को लागू करने के लिए मैं इस link से गुजर चुका था। इन इनपुट विभाजन को पार्स किया जा सकता है और टेक्स्ट प्रारूप में कैसे परिवर्तित किया जा सकता है?हडोप मानचित्र में पीडीएफ फाइलों को पार्स करना

+0

यह उत्तर आप जो खोज रहे हैं उसका हिस्सा हो सकता है: http://stackoverflow.com/a/9298965/698839 –

उत्तर

6

हडोप में प्रसंस्करण पीडीएफ फाइलों को FileInputFormat कक्षा बढ़ाकर किया जा सकता है। इसे विस्तारित करने वाले वर्ग को WholeFileInputFormat होना चाहिए। WholeFileInputFormat क्लास में आप GetRecordReader() विधि को ओवरराइड करते हैं। अब प्रत्येक पीडीएफ व्यक्तिगत इनपुट स्प्लिट के रूप में प्राप्त किया जाएगा। फिर इन व्यक्तिगत विभाजन को टेक्स्ट निकालने के लिए पार्स किया जा सकता है। यह link FileInputFormat को विस्तारित करने के तरीके को समझने का एक स्पष्ट उदाहरण देता है।

1

यह आपके विभाजन पर निर्भर करता है। मुझे लगता है (गलत हो सकता है) कि इसे पार्स करने के लिए आपको पूरी तरह से प्रत्येक पीडीएफ की आवश्यकता होगी। ऐसा करने के लिए जावा पुस्तकालय हैं, और Google जानता है कि वे कहां हैं।

यह देखते हुए कि आपको एक ऐसे दृष्टिकोण का उपयोग करने की आवश्यकता होगी जहां आप पूरी तरह से फ़ाइल को पार्स करने के लिए तैयार हों। मान लीजिए कि आप मैपर में ऐसा करना चाहते हैं, आपको एक पाठक की आवश्यकता होगी जो पूरे फाइल को मैपर पर सौंप देगी। ऐसा करने के लिए आप अपना खुद का पाठक लिख सकते हैं, या शायद वहां पहले से ही कोई है। आप संभवतः एक पाठक बना सकते हैं जो पीडीएफ की निर्देशिका को स्कैन करता है और प्रत्येक फ़ाइल का नाम मैपर में कुंजी और सामग्री के रूप में सामग्री के रूप में पास करता है।

+0

CombileFileInput प्रारूप के बजाय WholeFileInput प्रारूप को कार्यान्वित करना समस्या हल करता है। तो WholeFileInput प्रारूप में प्रत्येक पीडीएफ फ़ाइल को एक इनपुट विभाजन के रूप में प्राप्त किया जाएगा। फिर इन इनपुट विभाजन पूरी तरह से पार्स किया जा सकता है। – WR10

+0

जब भी पूरी फ़ाइल को एक स्प्लिट के रूप में पार्स करने का प्रयास किया जाता है, तो क्या फ़ाइल को पढ़ने का आकार एक बाधा नहीं होगा? आकार में टीबी की एक फ़ाइल पर विचार करें और यदि एक फ़ाइल है तो इसे एक मशीन पर अनिवार्य रूप से पार्स किया जाना चाहिए। हम इस बाधा को कैसे दूर कर सकते हैं? – WR10

+0

खैर, पहले पता लगाएं कि वास्तव में यह मामला है कि आपको पूरी तरह से पीडीएफ की आवश्यकता है ताकि इसे पार्स किया जा सके। यदि नहीं, तो यह समस्या को हल करता है। मान लीजिए कि आप इसे तोड़ नहीं सकते हैं, तो मुझे लगता है कि आपको फ़ाइल नामों को विभाजन के रूप में पास करना होगा, और सीधे अपने मैपर में एचडीएफएस से पढ़ना होगा। –

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