2011-05-25 12 views
12

क्या स्प्रिंगबैच में मैपरेडस शैली संचालन करना संभव है?स्प्रिंगबैच में MapReduce/कुल संचालन

मेरे बैच नौकरी में मेरे पास दो कदम हैं। पहला कदम औसत की गणना करता है। दूसरा चरण औसत मान के साथ प्रत्येक मान को एक और मान निर्धारित करने के लिए तुलना करता है।

उदाहरण के लिए, मान लें कि मेरे पास छात्र स्कोर का विशाल डेटाबेस है। पहला कदम प्रत्येक पाठ्यक्रम/परीक्षा में औसत स्कोर की गणना करता है। दूसरे चरण के लिए औसत कुछ सरल नियम के आधार पर ग्रेड का निर्धारण करने के साथ व्यक्तिगत स्कोर तुलना:

  1. एक अगर औसत से ऊपर
  2. बी छात्र स्कोर अगर छात्र स्कोर औसत
  3. सी करता है, तो नीचे दिए गए छात्र स्कोर औसत

वर्तमान में मेरा पहला कदम एक एसक्यूएल है जो औसत का चयन करता है और इसे एक टेबल पर लिखता है। दूसरा चरण एक एसक्यूएल है जो व्यक्तिगत स्कोर के साथ औसत स्कोर में शामिल होता है और नियम लागू करने के लिए प्रोसेसर का उपयोग करता है।

एवीजी जैसे समान समेकन कार्य हैं, मिनटों में बहुत कुछ उपयोग किया जाता है और मैं वास्तव में पसंद करता हूं कि यह प्रोसेसर में जितना संभव हो उतना सरल रखने वाले प्रोसेसर में किया जा सकता है। क्या कोई प्रोसेसर लिखने का कोई तरीका है जो समूह मानदंडों के आधार पर कई पंक्तियों में परिणाम एकत्र करता है और फिर एक बार आउटपुट तालिका में औसत/न्यूनतम लिखता है?

यह पैटर्न बहुत दोहराता है और मैं एक एसक्यूएल का उपयोग कर एकल प्रोसेसर कार्यान्वयन की तलाश नहीं कर रहा हूं जो औसत और व्यक्तिगत स्कोर दोनों प्राप्त करता है।

उत्तर

2

यह संभव है। आपको एक से अधिक चरणों की भी आवश्यकता नहीं है। नक्शा-कमी को एक ही चरण में लागू किया जा सकता है। आप ItemReader और ItemWriter के साथ जुड़े एक चरण बना सकते हैं। MapReader -ItemWriter जोड़ी के बारे में सोचें मानचित्र के रूप में- कम करें। आप प्रोपर लाइन एग्रीगेशन के साथ कस्टम रीडर और लेखक का उपयोग करके निरंतर प्रभाव प्राप्त कर सकते हैं। यह अपने रीडर/राइटर मध्यवर्ती StepContext वसंत बैच द्वारा आपरेशन बचाने की गारंटी करने के स्ट्रीम इंटरफ़ेस को लागू करने के लिए एक अच्छा विचार हो सकता है।

मैंने इसे मज़ेदार करने की कोशिश की, लेकिन मुझे लगता है कि यह व्यर्थ है क्योंकि आपकी कामकाजी क्षमता एकल जेवीएम द्वारा सीमित है, दूसरे शब्दों में: आप हडोप क्लस्टर (या अन्य वास्तविक मानचित्र कार्यान्वयन को कम नहीं कर सकते) उत्पादन पर्यावरण प्रदर्शन तक नहीं पहुंच सके। आपके डेटा आकार बढ़ने के साथ-साथ स्केल करने योग्य भी वास्तव में कठिन होगा।

अच्छा अवलोकन लेकिन IMO वर्तमान में असली दुनिया कार्यों के लिए बेकार।

0

मुझे लगता है कि एक बैच प्रसंस्करण ढांचे को प्रोग्रामिंग/कॉन्फ़िगरेशन और रन-टाइम चिंताओं को अलग करना चाहिए। यह अच्छा होगा अगर स्प्रिंग बैच जेवीएम, हैडोप क्लस्टर जैसे सभी प्रमुख बैच प्रसंस्करण रन टाइम पर जेनेरिक समाधान प्रदान करता है (JVM का भी उपयोग करता है) आदि

-> लिखें वसंत बैच प्रोग्रामिंग/विन्यास मॉडल है कि जैसे अन्य प्रोग्रामिंग मॉडल को एकीकृत का उपयोग कर बैच कार्यक्रमों नक्शे-कम करने, परंपरागत जावा आदि

-> (अपनी जरूरत के आधार पर चयन करें रन बार एकल JVM या Hadoop क्लस्टर या NoSQL)।

स्प्रिंग डेटा प्रयास इसे का एक हिस्सा का समाधान, डेटा स्रोतों के विभिन्न प्रकार के लिए एक एकीकृत विन्यास मॉडल और एपीआई उपयोग प्रदान करते हैं।)।

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