Gönderiye geç yazdığım için üzgünüm ama kabul edilmiş bir cevap göremiyorum.
df.write().saveAsTable
atacak AnalysisException
ve HIVE tablosu uyumlu değil.
DF'yi farklı saklama df.write().format("hive")
hile yapmalıdır!
Ancak, bu işe yaramazsa, önceki yorum ve cevaplara göre, bence en iyi çözüm budur (Yine de önerilere açık).
En iyi yaklaşım, açıkça HIVE tablosu oluşturmaktır (BÖLÜNMELİ tablo dahil),
def createHiveTable: Unit ={
spark.sql("CREATE TABLE $hive_table_name($fields) " +
"PARTITIONED BY ($partition_column String) STORED AS $StorageType")
}
DF'yi geçici tablo olarak kaydedin,
df.createOrReplaceTempView("$tempTableName")
ve PARTITIONED HIVE tablosuna ekleyin:
spark.sql("insert into table default.$hive_table_name PARTITION($partition_column) select * from $tempTableName")
spark.sql("select * from default.$hive_table_name").show(1000,false)
Tabii ki DF'deki SON SÜTUN , BÖLÜMLEME SÜTUNU olacaktır bu yüzden buna göre HIVE tablosu oluşturun!
Çalışırsa lütfen yorum yapın! ya da değil.
--GÜNCELLEME--
df.write()
.partitionBy("$partition_column")
.format("hive")
.mode(SaveMode.append)
.saveAsTable($new_table_name_to_be_created_in_hive)