का उपयोग कर SQL सर्वर से डेटा पढ़ना क्या स्पार्क एप्लिकेशन में माइक्रोसॉफ्ट एसक्यूएल सर्वर (और ओरेकल, माइस्क्ल, इत्यादि) से डेटा को पढ़ना संभव है? या क्या हमें मेमोरी सेट बनाने और आरडीडी में इसे लंबित करने की आवश्यकता है?स्पार्क एसक्यूएल
उत्तर
मेलिंग सूची से इसका समाधान मिला। इसे पूरा करने के लिए जेडीबीसीआरडीडी का उपयोग किया जा सकता है। मुझे एमएस एसक्यूएल सर्वर जेडीबीसी चालक जार प्राप्त करने और इसे मेरे प्रोजेक्ट के लिए lib में जोड़ने की आवश्यकता थी। मैं एकीकृत सुरक्षा का उपयोग करना चाहता था, और jq.library.path देख सकते हैं कि एक स्थान में sqljdbc_auth.dll (एक ही डाउनलोड में उपलब्ध) रखने के लिए आवश्यक है। फिर, कोड इस तरह दिखता है:
val rdd = new JdbcRDD[Email](sc,
() => {DriverManager.getConnection(
"jdbc:sqlserver://omnimirror;databaseName=moneycorp;integratedSecurity=true;")},
"SELECT * FROM TABLE_NAME Where ? < X and X < ?",
1, 100000, 1000,
(r:ResultSet) => { SomeClass(r.getString("Col1"),
r.getString("Col2"), r.getString("Col3")) })
यह SomeClass.The, दूसरे तीसरे और चौथे मापदंडों के एक RDD देता है के लिए आवश्यक हैं और निचले और ऊपरी सीमा के लिए कर रहे हैं, और विभाजन की संख्या। दूसरे शब्दों में, इस स्रोत डेटा को काम करने के लिए लंबे समय तक विभाजित करने की आवश्यकता है।
स्पार्क 1.4.0+ आप अब sqlContext.read.jdbc
है कि आप एक पंक्ति के RDD वस्तुओं के बजाय एक DataFrame दे देंगे का उपयोग कर सकते हैं।
समाधान आप ऊपर पोस्ट के बराबर होगा
sqlContext.read.jdbc("jdbc:sqlserver://omnimirror;databaseName=moneycorp;integratedSecurity=true;", "TABLE_NAME", "id", 1, 100000, 1000, new java.util.Properties)
यह तालिका के स्कीमा लेने चाहिए, लेकिन अगर आप इसे मजबूर करने के लिए चाहते हैं तो आप के बाद स्कीमा विधि का उपयोग कर सकते हैं sqlContext.read.schema(...insert schema here...).jdbc(...rest of the things...)
ध्यान दें कि आपको यहां कुछ क्लास का आरडीडी नहीं मिलेगा (जो मेरे दृश्य में अच्छा है)। इसके बजाय आपको प्रासंगिक फ़ील्ड का डेटाफ्रेम मिलेगा।
अधिक जानकारी यहां पाया जा सकता है: http://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases
- 1. स्पार्क एसक्यूएल
- 2. स्पार्क एसक्यूएल
- 3. स्पार्क एसक्यूएल
- 4. स्पार्क एसक्यूएल
- 5. स्पार्क एसक्यूएल
- 6. स्पार्क-एसक्यूएल
- 7. स्पार्क एसक्यूएल
- 8. स्पार्क एसक्यूएल: rdd.cache()
- 9. java.sql.SQLException: स्पार्क एसक्यूएल
- 10. 'स्पार्क एसक्यूएल 1.3.0+
- 11. अपाचे स्पार्क एसक्यूएल
- 12. स्पार्क एसक्यूएल जेडीबीसी समर्थन
- 13. स्पार्क एसक्यूएल तालिका
- 14. कैसे स्पार्क एसक्यूएल में हाइफन
- 15. स्पार्क एसक्यूएल Dataframe - आयात sqlContext.implicits._
- 16. स्पार्क एसक्यूएल फ़िल्टर एकाधिक फ़ील्ड्स
- 17. स्पार्क एसक्यूएल पैकेज नहीं मिला
- 18. स्पार्क एसक्यूएल विंडो फ़ंक्शन अंतराल
- 19. कौन सा तेजी से है? स्पार्क एसक्यूएल
- 20. स्कैला और स्पार्क: एसक्यूएल स्टेटमेंट रीसाइक्लिंग
- 21. स्पार्क एसक्यूएल कनवर्टिंग स्ट्रिंग को टाइमस्टैम्प
- 22. स्पार्क एसक्यूएल नेस्टल के साथ घोंसला
- 23. स्पार्क एसक्यूएल बड़ी संख्या में शार्ड्स
- 24. स्पार्क एसक्यूएल: कन्वर्ट RDD [GenericData.Record] DataFrame को
- 25. एसक्यूएल प्रश्नों बनाम dataframe कार्यों स्पार्क
- 26. स्पार्क
- 27. स्पार्क एसक्यूएल बनाम स्पार्क पर हाइव - अंतर और पेशेवरों और विपक्ष?
- 28. स्पार्क-खोल
- 29. स्पार्क
- 30. स्पार्क
इस यकीन के लिए अनुत्तरित होने वाला है: पी – khandelwaldeval
तो लगता है ... किसी भी कारण से क्यों? अगर यह सबकुछ से डेटा को बंद कर सकता है, तो सबसे आम स्टोर क्यों नहीं? – ashic
आपको उत्तर देने के लिए कुछ दिनों तक इंतजार करना होगा क्योंकि टैग 'अपाचे-स्पार्क' बहुत गंभीर रूप से उपयोग किया जाता है। अपाचे लोगों के लिए आपके प्रश्न का उत्तर देने के लिए कुछ दिनों तक प्रतीक्षा करें। – khandelwaldeval