ile daha sonraki bir kullanım için birçok DB tablosuna erişim hazırlayın Spark ile ilk adımları yapıyorum ve bir veritabanından JDBC sürücüsü aracılığıyla bazı verileri içe aktarma yollarını arıyorum. Planım, saf SparkSQL komutlarına sahip başka bir ekipten daha sonra kullanılmak üzere DB'den birçok tablo için erişimi hazırladığımdur. Böylece, verilere odaklanabilir ve artık kodla hiç iletişim kuramazlar.Kıvılcım
DB ile bağlantım çalışıyor ve şu ana kadar iki veri yolunu buldum.
Yolu 1:
sqlContext.read.jdbc(url,"tab3",myProp).registerTempTable("tab3")
Yolu 2:
case class RowClass_TEST (COL1:String, COL2:String)
val myRDD_TEST= new JdbcRDD(sc,() => DriverManager.getConnection(url,username,pw), "select * from TEST where ? < ?", 0,1,1,row => RowClass_TEST(row.getString("COL1"),row.getString("COL2")) myRDD_TEST.toDF().registerTempTable("TEST")
Ancak her iki yolu bazı kötü etkileri vardır,
Yolu 1 kadar hızlı daha yüksek miktarda hazırlamak varsa değil Daha sonra kullanılmayan tabloların
yol 2 çalışmaları çok hızlı (I bağlantı oluşturmak (örneğin yürütülmesi sırasında 5 JDBC komando iz, giriş, ayarlar, başlık için sorgu) bağlantıyı sonlandırmak), ancak Scala case class
ağır sınırlama hast.
Yalnızca 22 değeri bu tür bir sınıfla kurabilirsiniz.
case class
olmadan kurulum yolu 2 için kolay bir çözüm var mı?
22'den fazla sütun içeren bazı DB tablolarına erişmek istiyorum.
Zaten çalışmayı denedim, ancak Scala bilgim henüz yeterince iyi değil.
_You can sadece kurulum class_ bu tür 22 değerleri - şimdi uzun bir süredir doğru değildir. – zero323
Ah, kulağa hoş geliyor. Bir Zeppelin Web GUI'sini testlerim için bir ön uç olarak kullanıyorum ve büyük "case class" dan bir hata mesajı (sadece bir sayı) alıyorum. Kenarlık daha yeni bir Scala sürümü ile kaldırıldı mı? – Xaltos
2.11 - https://issues.scala-lang.org/browse/SI-7296. Yine de 22 tane sınır mevcut. – zero323