के माध्यम से थोक डेटा माइग्रेशन मैं वर्तमान में स्पार्क एसक्यूएल के माध्यम से एक बहुत बड़ी MySQL तालिका की सामग्री को माइक्रेट करने की कोशिश कर रहा हूं। लेकिन ऐसा करने पर मैं जल्दी से स्मृति से बाहर चला जाता हूं, भले ही ड्राइवर की मेमोरी सीमा अधिक हो (मैं स्थानीय मोड में स्पार्क का उपयोग कर रहा हूं)। उदाहरण कोड:स्पार्क एसक्यूएल
Dataset<Row> ds = spark.read()
.format("jdbc")
.option("url", url)
.option("driver", "com.mysql.jdbc.Driver")
.option("dbtable", "bigdatatable")
.option("user", "root")
.option("password", "foobar")
.load();
ds.write().mode(SaveMode.Append).parquet("data/bigdatatable");
ऐसा लगता है स्पार्क स्मृति में पूरे तालिका सामग्री, जो बहुत अच्छी तरह से बाहर काम करने के लिए नहीं जा रहा है पढ़ने का प्रयास की तरह। तो, स्पार्क एसक्यूएल के माध्यम से थोक डेटा माइग्रेशन करने का सबसे अच्छा तरीका क्या है?
आप ओओएम प्राप्त करना क्योंकि स्पार्क गलत कॉन्फ़िगर किया गया है, आपको शायद ड्राइवर में स्ट्रीमिंग सक्षम करना चाहिए: http://stackoverflow.com/a/2448019/2439539 – r90t