2013-06-12 13 views
16

में चयन * की तुलना में चयन गणना (*) धीमा क्यों है जब मैं VirtualBox Sandbox में हाइव के साथ क्वेरी चला रहा हूं। मुझे लगता है कि Select count(*)Select * से बहुत धीमी है।हाइव

क्या कोई बता सकता है कि पीछे क्या हो रहा है?

और यह देरी क्यों हो रही है?

उत्तर

2

ऐसा इसलिए है क्योंकि डीबी क्लस्टरर्ड प्राथमिक कुंजी का उपयोग कर रहा है, इसलिए क्वेरी प्रत्येक पंक्ति को अलग-अलग कुंजी के लिए खोजती है, पंक्ति को agonizing द्वारा पंक्ति, सूचकांक से नहीं।

  • रन optimize table। यह सुनिश्चित करेगा कि डेटा पेज सॉर्ट किए गए क्रम में भौतिक रूप से संग्रहीत हैं। यह एक क्लस्टर प्राथमिक कुंजी पर रेंज स्कैन की कल्पना कर सकता है।

  • केवल __vent_id कॉलम पर एक अतिरिक्त गैर-प्राथमिक अनुक्रमणिका बनाएं। यह इंडेक्स पृष्ठों में उस कॉलम की एक प्रति स्टोर करेगा जो स्कैन करने के लिए बहुत तेज़ होगा। यह बनाने के बाद, जांच समझाओ योजना यकीन है कि यह नया सूचकांक

+1

कुछ मुझे बताता है कि AlexHenderson_v1.00 गलत प्रश्न का उत्तर दे रहा था। –

+0

नहीं। मेरी प्रतिक्रिया के बाद टिप्पणी संपादित की जानी चाहिए। कुछ मुझे बताता है कि आपने मेरा नाम गलत लिखा है। –

11
select * from table 

उपयोग कर रहा है यह एक मानचित्र केवल काम हो सकता है लेकिन

Select Count(*) from table 

यह एक मानचित्र हो सकता है और काम कम कर सकते हैं

उम्मीद है कि इससे मदद मिलती है।

+1

ठीक है धन्यवाद, क्या आप मुझे बता सकते हैं कि काम करने के पीछे उसका कोड कैसा है? क्या निष्पादन समय प्राप्त करने का कोई तरीका है? मेरा जॉब क्या मतलब है? – Haris

3

तीन प्रकार के ऑपरेशन हैं जो एक हाइव क्वेरी कर सकते हैं।

सबसे महंगा और तेज़ और अधिक महंगा और धीमे होने के क्रम में वे हैं।

एक हाइव क्वेरी केवल मेटाडेटा अनुरोध हो सकती है।

तालिकाएं दिखाएं, तालिका का वर्णन उदाहरण हैं। इन प्रश्नों में हाइव प्रक्रिया मेटाडेटा सर्वर में एक लुकअप करती है। मेटाडेटा सर्वर एक SQL डेटाबेस है, शायद MySQL, लेकिन वास्तविक डीबी कॉन्फ़िगर करने योग्य है।

एक हाइव क्वेरी एक hdfs अनुरोध प्राप्त हो सकता है। तालिका से * चुनें, एक उदाहरण होगा। इस मामले में हाइव एक एचडीएफएस ऑपरेशन करके परिणाम वापस कर सकते हैं। हडूप एफएस -get, कम या ज्यादा।

एक हाइव क्वेरी एक मानचित्र को कम कर सकती है।

हाइव को जार को एचडीएफएस में भेजना है, जॉबट्रैकर कार्यों को कतारबद्ध करता है, टास्कट्रैक कार्यों को निष्पादित करता है, अंतिम डेटा एचडीएफएस में डाल दिया जाता है या क्लाइंट को भेज दिया जाता है।

मानचित्र कम करने के लिए नौकरी की अलग-अलग संभावनाएं भी हैं।

यह मानचित्र केवल नौकरी हो सकता है। * तालिका से चुनें जहां आईडी> 100, उदाहरण के लिए, उस तर्क के सभी मैपर पर लागू किया जा सकता है।

यह एक मानचित्र हो सकता है और नौकरी कम कर सकता है, तालिका से न्यूनतम (आईडी) का चयन करें; आईडी द्वारा टेबल ऑर्डर से * चुनें;

यह कई नक्शा भी ले सकता है पास को कम करता है, लेकिन मुझे लगता है कि उपरोक्त कुछ व्यवहार सारांशित करता है।