Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

java.lang.OutofMemorySpace:pyspark में डेटाबेस से 120 मिलियन पंक्तियों को प्राप्त करते समय जावा हीप स्पेस

आप 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 न्यूनतम मान . को स्थापित करता है partitionColumn . का जिसे लाया जाएगा।

upperBound अधिकतम मान को स्थापित करता है partitionColumn . का जिसे लाया जाएगा।

numPartitions इसका मतलब है कि आप RDBMS के माध्यम से डेटा पढ़ने के लिए कितने समानांतर कनेक्शन सेट करना चाहते हैं।

तो स्पार्क आपको पंक्तियों का उपयोग करके डेटासेट पुनर्प्राप्त करेगा जो आपको मिलेगा यदि आप SELECT * FROM table WHERE partitionColumn BETWEEN lowerBound AND upperBound




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या सम्मिलित करना संभव है और फिर एक के बाद एक सम्मिलित पंक्ति का चयन करें?

  2. पासवर्ड प्रॉम्प्ट के बिना mysqldump कैसे करें?

  3. अद्यतन के बाद MySQL ट्रिगर शर्त के साथ किसी अन्य तालिका में सम्मिलित करें

  4. MySQL C API और C++ का उपयोग करके एक MySQL डेटाबेस तालिका में पंक्तियों को ला रहा है

  5. MySQL जटिल क्वेरी परिणामों की गणना करता है?