2016-08-03 26 views
5

Ben kovan tablodan okuma ve kıvılcım sql

val x = sqlContext.sql("select * from some_table") 

val

Kıvılcım SQL kullanarak bir kovan tablo okuma ve bir skalasına atamadan am Sonra dataframe x ile bazı işlem yapıyorum kullanarak ona tekrar yazıp Son olarak, bir tabloyla kesin şemaya sahip olan bir veri çerçevesiyle geliyoruz.

Nihayet ben hatayı

org.apache.spark.sql.AnalysisException alıyorum Sonra

y.write.mode(SaveMode.Overwrite).saveAsTable().insertInto("some_table") 

some_table aynı kovan masaya y dataframe üzerine eklemek çalışıyorum: Can not (ayrıca ben bir ekleme sql deyimi oluşturma ve sqlContext.sql kullanarak ateş çalıştı

okunan ediliyor tabloya üzerine yerleştirin) ama o da bana aynı hatayı verdi.

Bu hatayı atlatmanın bir yolu var mı? Kayıtları aynı masaya tekrar eklemem gerek.


Merhaba Önerildiği gibi yapmaya çalıştım ama yine de aynı hatayı alıyordum.

val x = sqlContext.sql("select * from incremental.test2") 
val y = x.limit(5) 
y.registerTempTable("temp_table") 
val dy = sqlContext.table("temp_table") 
dy.write.mode("overwrite").insertInto("incremental.test2") 

scala> dy.write.mode("overwrite").insertInto("incremental.test2") 
      org.apache.spark.sql.AnalysisException: Cannot insert overwrite into table that is also being read from.; 

cevap

5

Önce Sonra hedef tabloya

val dy = sqlContext.table("temp_table") 
dy.write.mode("overwrite").insertInto("some_table") 
+0

satırları üzerine yazabilirsiniz geçici tabloya

y.write.mode("overwrite").saveAsTable("temp_table") 

daki DataFrame y kurtarmak yine aynı hatayı aldım olmalıdır. Sorumu kod snippet'i – Avi

+0

ile değiştirdim Üzgünüm, cevabımı düzenledim. registerAsTempTable bir bellek içi tablo oluşturarak, aynı hatayı verir. SaveAsTable ile çalışmalıdır (ancak diske yazılır, daha sonra tabloyu düşürmeniz gerekir). Maalesef, diğer alternatifleri göremiyorum – cheseaux

+0

Ya, durumu aynı mantıkla ele aldım ama maliyetini düşük tutuyorum. Vurguladığınız, diske yazdığınız nokta, atlamayı çok isterim. Her neyse yardım @cheseaux için teşekkürler. Bu konuda iyi bir şey bulursan bana haber ver. Alkış !! – Avi

İlgili konular