2016-11-07 2 views
7

मेरे पास एक एसक्यूएल कथन क्वेरी है जो कई क्षेत्रों में एक समूह कर रही है। टेबल जो इसका उपयोग करती है वह भी बड़ी है (आकार में 4TB)। मैं टेबल को एक अस्थायी तालिका के रूप में पंजीकृत कर रहा हूं। हालांकि मुझे नहीं पता कि तालिका कैश हो जाती है या नहीं जब मैं इसे एक टेम्पलेट टेबल के रूप में पंजीकृत कर रहा हूं? मैं यह भी नहीं जानता कि यह अधिक प्रदर्शनकारी है या नहीं, यदि मैं अपनी क्वेरी को स्केल फ़ंक्शन में परिवर्तित करता हूं (उदा। Df.groupby()। Aggr() ...) इसे एसक्यूएल स्टेटमेंट के रूप में रखने के बजाय। उस पर कोई मदद?क्या रजिस्टर TempTable तालिका को कैश करने का कारण बनता है?

उत्तर

6

एसक्यूएल सबसे अधिक संभावना दूर Databricks blog

आप विभाजन का प्रयास किया था द्वारा सबसे तेजी से होने जा रहा है/अपने dataframe पुनर्विभाजन के रूप में अच्छी तरह से है कि क्या यह प्रदर्शन में सुधार देखने के लिए?

रजिस्टर के बारे में टेम्पलेटटेबल: यह केवल स्पार्क संदर्भ के भीतर तालिका को पंजीकृत करता है। आप यूआई के साथ जांच सकते हैं।

val test = List((1,2,3),(4,5,6)).toDF("bla","blb","blc") 
test.createOrReplaceTempView("test") 
test.show() 

संग्रहण खाली

बनाम

val test = List((1,2,3),(4,5,6)).toDF("bla","blb","blc") 
test.createOrReplaceTempView("test").cache() 
test.show() 

enter image description here

रास्ता registerTempTable स्पार्क 2.0 में बहिष्कृत है और

createOrReplac ने ले लिया है के द्वारा होता है eTempView

0

मैं एक एसक्यूएल बयान क्वेरी जो कई क्षेत्रों पर से एक समूह कर रहा है है। टेबल जो इसका उपयोग करती है वह भी बड़ी है (आकार में 4TB)। मैं टेबल को एक अस्थायी तालिका के रूप में पंजीकृत कर रहा हूं। हालांकि मुझे नहीं पता कि तालिका कैश हो जाती है या नहीं जब मैं इसे एक टेम्पलेट टेबल के रूप में पंजीकृत कर रहा हूं?

रजिस्टर टेम्पम्टेबल या createOrReplaceTempView डेटा को स्मृति या डिस्क में तब तक कैश नहीं करता जब तक कि आप कैश() फ़ंक्शन का उपयोग न करें।

मुझे यह भी पता नहीं है कि क्या यह अधिक performant है अगर मैं स्काला समारोह में मेरी जिज्ञासा को बदलने (जैसे df.groupby()। Aggr() ...) बल्कि एक एसक्यूएल बयान के रूप में यह की तुलना में। उस पर कोई मदद?

एसक्यूएल क्वेरी में एसक्यूएल शब्दों को ध्यान में रखें, अंत में फ़ंक्शन को अंदर कॉल करें। तो क्या आप एसक्यूएल क्वेरी शब्द या कोड में उपलब्ध कार्यों का उपयोग करते हैं, इससे कोई फर्क नहीं पड़ता। यह वही बात है।

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