Microsoft Sql Server'dan (ve oracle, mysql, vb.) Spark uygulamasında bir rdd'ye veri okumak mümkün mü? Ya da bir bellek setini oluşturmamız ve bunu bir RDD'ye paralel hale getirmemiz gerekiyor mu?Verileri SQL Server kullanarak Spark SQL kullanarak okuma
cevap
Mail Listesinden buna bir çözüm buldum. Bunu yapmak için JdbcRDD kullanılabilir. MS Sql Server JDBC sürücü jarünü almam ve projem için lib'a eklemem gerekiyordu. Entegre güvenlik kullanmak istedim ve böylece java.library.path'in görebileceği bir konumda sqljdbc_auth.dll dosyasını (aynı yüklemede mevcut) koymak gerekiyordu. Ardından, kod şöyle görünür:
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")) })
Bu gereklidir SomeClass.The, ikinci, üçüncü ve dördüncü parametrelerin bir RDD verir ve alt ve üst sınırları içindir ve bölümleri sayısı. Başka bir deyişle, bu kaynak verisinin çalışması için uzun yıllar bölümlenebilir olması gerekir. Şimdi size yerine RDD Row nesnelerin DataFrame verecektir sqlContext.read.jdbc
kullanabilirsiniz 1.4.0+ Kıvılcım olarak
.
yukarıda yayınlanan çözüme eşdeğer
sqlContext.read.jdbc("jdbc:sqlserver://omnimirror;databaseName=moneycorp;integratedSecurity=true;", "TABLE_NAME", "id", 1, 100000, 1000, new java.util.Properties)
Bu tablonun şema almak gerekir, ama bunu zorlamak isterseniz, size sonra şema yöntemini kullanabilirsiniz okumanın bir RDD of SomeClass (burada benim görüşüme daha iyi) vermeyeceğinizi unutmayın. Bunun yerine ilgili alanların bir DataFrame'i alırsınız.
fazla bilgi burada bulunabilir: http://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases
- 1. Spark SQL
- 2. Powershell'de SQL deyimini kullanarak verileri alma
- 3. SQL Server: Ben mantıksal olarak bazı verileri dönmelidir SQL Server üzerinde bir SQL sorgusu çalıştırıyorum verileri
- 4. Spark SQL
- 5. SQL Server Profiler SQL deyiminde
- 6. R: RODBC & SQL Server
- 7. Resim ekle SQL Server 2005 Görüntü Alanı'nı kullanarak yalnızca SQL
- 8. SQL - Ay/Mahallesi'nin Sayısal Günü alın SQL Server 2005 kullanarak
- 9. SQL Server FOR XML dilimini kullanarak birleştirin
- 10. Çoklu Tabloları Kullanarak SQL Server Güncelleştirmesi
- 11. SQL Server Sorgu Bildirimleri saklı yordamını kullanarak
- 12. SQL Server
- 13. Spark SQL, filtrelenmiş eşdeğer birleştirmelerde aşağı itmeyi yapıyor mu? Ben Spark SQL (1.6) kullanarak ilgileniyorum
- 14. [SQL Server]
- 15. SQL Server: çift verileri nasıl önlersiniz?
- 16. Spark kullanarak HiveContext
- 17. SQL Server Profiler
- 18. SQL Server
- 19. Sql Server
- 20. SQL Server
- 21. SQL Server
- 22. SQL Server
- 23. SQL Server
- 24. SQL Server
- 25. SQL Server
- 26. SQL Server:
- 27. SQL Server
- 28. SQL Server: Nasıl toplamı?
- 29. Spark SQL sözdizimi başvurusu
- 30. Tüm Spark SQL DataType
bu sana kesin cevapsız olacak: P – khandelwaldeval
öyle görünüyor ... herhangi bir nedeni neden? Eğer her şeyden veri toplayabilirse, neden en yaygın mağazalar olmasın? – ashic
, 'apache-spark' etiketi kullanıldığında bu yanıtı almak için birkaç gün beklemek zorunda kalacaksınız. Apache adamlarının sorunuzu cevaplaması için birkaç gün bekleyin. – khandelwaldeval