शामिल करने के लिए अनुक्रम FileInputFormat को विस्तारित करें, मैं एक कस्टम इनपुट फ़ॉर्मेट बनाने में सक्षम होना चाहता हूं जो अनुक्रम फ़ाइलों को पढ़ता है, लेकिन इसके अतिरिक्त फ़ाइल पथ का खुलासा करता है और उस फ़ाइल के भीतर ऑफ़सेट होता है जहां रिकॉर्ड स्थित होता है।फ़ाइल नाम + ऑफसेट
एक कदम वापस लेने के लिए, यहां उपयोग केस है: मेरे पास एक अनुक्रम फ़ाइल है जिसमें विविध आकार का डेटा है। चाबियाँ अधिकतर अप्रासंगिक होती हैं, और मान दो मेगाबाइट तक होते हैं जिनमें विभिन्न प्रकार के विभिन्न फ़ील्ड होते हैं। मैं इन क्षेत्रों में से कुछ को फ़ाइल नाम और ऑफसेट के साथ elasticsearch में इंडेक्स करना चाहता हूं। इस तरह, मैं elasticsearch से उन क्षेत्रों से पूछताछ कर सकता हूं, और फिर अनुक्रम फ़ाइल पर वापस जाने के लिए फ़ाइल नाम और ऑफसेट का उपयोग कर सकता हूं और ES में पूरी चीज़ को संग्रहीत करने के बजाय मूल रिकॉर्ड प्राप्त कर सकता हूं।
मेरे पास यह पूरी प्रक्रिया एक जावा प्रोग्राम के रूप में काम कर रही है। SequenceFile.Reader क्लास यह होने के लिए getPosition
और seek
विधियों को आसानी से देता है।
हालांकि, अंत में डेटा के कई टेराबाइट शामिल होंगे, इसलिए मुझे इसे मैपरेडस जॉब (शायद मानचित्र-केवल) में परिवर्तित करने की आवश्यकता होगी। चूंकि अनुक्रम फ़ाइल में वास्तविक कुंजी अप्रासंगिक हैं, जिस दृष्टिकोण को मैंने लेने की आशा की थी वह एक कस्टम इनपुट फ़ॉर्मैट बनाना होगा जो किसी भी तरह से SquenceFileInputFormat का उपयोग करता है या वास्तविक कुंजी को वापस करने के बजाय, फ़ाइल के साथ एक समग्र कुंजी देता है और ऑफसेट।
हालांकि, यह अभ्यास में और अधिक कठिन साबित हो रहा है। ऐसा लगता है कि यह संभव होना चाहिए, लेकिन वास्तविक एपीआई और क्या खुलासा किया गया है, यह मुश्किल है। कोई विचार? शायद मुझे एक वैकल्पिक दृष्टिकोण लेना चाहिए?