2014-06-12 7 views

उत्तर

6

अपडेट (2016-03-16): अधिकांश प्रश्नों के लिए, अब आवश्यक नहीं है, और वास्तव में इस त्रुटि को देखने की संभावना में वृद्धि हो सकती है। यदि आप अपनी क्वेरी में प्रत्येक जॉइन और ग्रुप बाय से प्रत्येक कीवर्ड को छोड़ देते हैं, तो क्वेरी इंजन अब इस त्रुटि को समाप्त करने के लिए आपकी क्वेरी को गतिशील रूप से अनुकूलित करेगा।

अभी भी कोने के मामले हैं जहां प्रत्येक कीवर्ड निर्दिष्ट करने से क्वेरी चल सकती है (या तेजी से चल सकती है), लेकिन आमतौर पर बिगक्वायर टीम बोलने की सिफारिश की जाती है कि आप पहले बिना किसी प्रश्न के अपनी क्वेरी का प्रयास करें। बहुत जल्द, प्रत्येक कीवर्ड एक पूर्ण नो-ऑप बन जाएगा।


मूल जवाब: आपको प्रत्येक कीवर्ड का उपयोग करते हैं में प्रत्येक या समूह में शामिल होने EACH BY का, या के अनुसार जब आप BigQuery विभाजन मक्खी पर ("शफ़ल") अपने डेटा BY खंड एक विभाजन का उपयोग कुंजी या समूह कुंजी में शामिल हों, जो प्रत्येक कार्यकर्ता को स्थानीय रूप से जुड़ने या एकत्रीकरण के अपने हिस्से को करने की अनुमति देता है।

संसाधनों में त्रुटि पार हो गई जब एक ऐसे कर्मचारी को बहुत अधिक डेटा मिलता है, और इसकी सीमा समाप्त हो जाती है।

  1. तिरछा:: आम तौर पर दो श्रेणियों में कहा जाए तो इस त्रुटि पतन के कारणों डेटा एक कुंजी मान की ओर भारी विषम (जैसे कि, एक "अतिथि" उपयोगकर्ता ID या एक अशक्त कुंजी), एक है कि इसका अर्थ है कि कार्यकर्ता को उस कुंजी के लिए सभी रिकॉर्ड मिलते हैं और अधिभारित हो जाते हैं।

  2. डेटा आकार और कार्यकर्ता गिनती में मेल नहीं खाता: आपके पास बिगक्वियर ने आपकी क्वेरी असाइन की गई श्रमिकों की संख्या के लिए बहुत अधिक डेटा है।

हम कई सुधार पर काम कर रहे हम दोनों स्थितियों से निपटने के लिए इतना है कि आप इन मुद्दों के बारे में चिंता करने की जरूरत नहीं है मदद करने के लिए। अभी के लिए, आप निम्न दृष्टिकोणों में से किसी एक के साथ समस्या के आसपास काम कर सकते हैं:

  1. skewed कुंजी फ़िल्टर करें। यदि आपका डेटा खराब हो गया है क्योंकि आपके शामिल होने वाले प्रमुख मूल्यों में से आधे वास्तव में शून्य हैं, तो आप शामिल होने से पहले WHERE key IS NOT NULL जोड़कर उनको फ़िल्टर कर सकते हैं।

  2. संसाधित डेटा की मात्रा को कम करें। डेटा के केवल 1/5 (या जो भी अंश आप चाहते हैं) में शामिल होने के लिए WHERE ABS(HASH(key)) % 5 == 0 के साथ जुड़ने के प्रत्येक पक्ष को फ़िल्टर करें, और फिर अलग-अलग प्रश्नों में == 1, == 2, == 3, == 4 के लिए ऐसा ही करें। क्वेरी को मैन्युअल रूप से करने के लिए आप छोटे हिस्सों में डेटा को मैन्युअल रूप से शेड कर रहे हैं - लेकिन ध्यान दें कि आप 5x का भुगतान करते हैं क्योंकि आपने 5 बार वही डेटा पूछताछ की है।

  3. अपनी क्वेरी का पुनरीक्षण करें। शायद आप अपनी क्वेरी को पूरी तरह से अलग तरीके से बना सकते हैं, या कुछ जवाब देने के लिए कुछ मध्यवर्ती परिणामों की गणना कर सकते हैं।

+0

क्या आप यहां दिए गए कामकाजों पर विस्तार से बता सकते हैं? क्या मैं यह समझने में सही हूं कि पार्टनर के समान परिणाम प्राप्त करने के लिए कुछ चालाक चाल हैं, बिना किसी कार्यकर्ता कार्य को "ओवरलोडिंग" के परिणाम? –

+0

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

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