आप RAM में लोड करने का प्रयास कर रहे हैं बहुत अधिक डेटा . स्पार्क . तक पहुंचने से पहले आपको SQL द्वारा पुनर्प्राप्त किए जाने वाले डेटा की मात्रा को पहले कम करना चाहिए और स्पार्क पैरामीटर का उपयोग करके इसे अनुकूलित करें, उदाहरण के लिए विभाजन ।
इनमें से एक या अधिक अनुकूलन पर विचार करें:
SELECTमें निर्दिष्ट करें स्पष्ट रूप से देखने के लिए कौन से कॉलम, यदि संभव हो तो केवल वही जिनकी आपको आवश्यकता है;- (कच्ची क्वेरी)
whileमें लूप करें जब तक आपfetchप्रत्येक पंक्ति को लूप करके पंक्तियाँ। निम्नलिखित तकनीकें एक स्थिरn_rowsसेट करके काम कर सकती हैं मेमोरी में पढ़ने औरi. को अपडेट करने के लिए प्रत्येक साइकिल को अनुक्रमित करें:
LIMIT i,i+n_rows
BETWEEN i AND i+n_rows
WHILE primaryKey >= i AND primaryKey < i+n_rows
- विभाजन का उपयोग करना .
partitionColumnका प्रयोग करें ,lowerBound,upperBoundऔरnumPartitions(संदर्भ 1) और (संदर्भ 2) :
partitionColumn उस कॉलम का चयन करें जिसका उपयोग यह निर्धारित करने के लिए किया जाएगा कि डेटा को कैसे विभाजित किया जाए (उदाहरण के लिए, प्राथमिक कुंजी )।
lowerBound न्यूनतम मान . को स्थापित करता है partitionColumn . का जिसे लाया जाएगा।
upperBound अधिकतम मान को स्थापित करता है partitionColumn . का जिसे लाया जाएगा।
numPartitions इसका मतलब है कि आप RDBMS के माध्यम से डेटा पढ़ने के लिए कितने समानांतर कनेक्शन सेट करना चाहते हैं।
तो स्पार्क आपको पंक्तियों का उपयोग करके डेटासेट पुनर्प्राप्त करेगा जो आपको मिलेगा यदि आप SELECT * FROM table WHERE partitionColumn BETWEEN lowerBound AND upperBound ।