2015-09-16 6 views
6

पर सहेजना/निर्यात करना मैं जेडीबीसी डेटाबेस पर डेटा लिखने के लिए नए DataFrameWriter का उपयोग करने का तरीका जानने का प्रयास कर रहा हूं। मुझे इसके लिए कोई दस्तावेज नहीं मिल रहा है, हालांकि स्रोत कोड को देखते हुए ऐसा लगता है कि यह संभव होना चाहिए।परिवर्तित डेटाफ्रेम को जेडीबीसी/माईएसक्यूएल

का एक तुच्छ उदाहरण क्या मैं इस तरह दिखता है कोशिश कर रहा हूँ:

sqlContext.read.format("jdbc").options(Map(
    "url" -> "jdbc:mysql://localhost/foo", "dbtable" -> "foo.bar") 
).select("some_column", "another_column") 
.write.format("jdbc").options(Map(
    "url" -> "jdbc:mysql://localhost/foo", "dbtable" -> "foo.bar2") 
).save("foo.bar2") 

यह काम नहीं करता है - मैं इस त्रुटि के साथ अंत:

java.lang.RuntimeException: org.apache.spark.sql.execution.datasources.jdbc.DefaultSource does not allow create table as select. 
    at scala.sys.package$.error(package.scala:27) 
    at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:200) 

मैं अगर यकीन नहीं है मैं कुछ गलत कर रहा हूं (उदाहरण के लिए जेडीबीसीआरडीडी के बजाय यह डिफ़ॉल्ट स्रोत का समाधान क्यों कर रहा है?) या यदि मौजूदा MySQL डेटाबेस को लिखना स्पार्क के डेटाफ्रेम एपीआई का उपयोग करना संभव नहीं है।

+1

यह समस्या का स्रोत नहीं है लेकिन आपके उदाहरण में 'लोड' कॉल गुम है। – zero323

उत्तर

6

अद्यतन

वर्तमान स्पार्क संस्करण (2.0 या बाद में) लिखने पर तालिका बनाने का समर्थन करता है।

मूल जवाब

यह एक मौजूदा टेबल में लिखने के लिए संभव है, लेकिन यह इस पल (स्पार्क 1.5.0) तालिका बनाने का उपयोग कर JDBC डेटा स्रोत अभी समर्थित नहीं है * पर तरह दिखता है। संदर्भ के लिए आप SPARK-7646 देख सकते हैं।

तालिका पहले से ही आप बस DataFrameWriter.jdbc विधि का उपयोग कर सकते हैं मौजूद है:

val prop: java.util.Properties = ??? 
df.write.jdbc("jdbc:mysql://localhost/foo", "foo.bar2", prop) 

* क्या दिलचस्प PySpark jdbc विधि का उपयोग कर तालिका बनाने का समर्थन करने के लगता है।

+2

धन्यवाद, जो एक सेव मोड के अतिरिक्त के साथ पूरी तरह से काम किया; यानी 'df.write.mode (SaveMode.Overwrite) .jdbc ("jdbc: mysql: // localhost/foo", "foo.bar2", prop) ' –

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