आप 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
।