Desculpe escrever tarde para o post, mas não vejo nenhuma resposta aceita.
df.write().saveAsTable
irá lançar AnalysisException
e não é compatível com a tabela HIVE.
Armazenar DF df.write().format("hive")
deve resolver!
Porém, se isso não funcionar, indo pelos comentários e respostas anteriores, esta é a melhor solução na minha opinião (no entanto, aberto a sugestões).
A melhor abordagem é criar explicitamente a tabela HIVE (incluindo a tabela PARTITIONED),
def createHiveTable: Unit ={
spark.sql("CREATE TABLE $hive_table_name($fields) " +
"PARTITIONED BY ($partition_column String) STORED AS $StorageType")
}
salvar DF como tabela temporária,
df.createOrReplaceTempView("$tempTableName")
e insira na tabela PARTITIONED HIVE:
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)
Claro que a ÚLTIMA COLUNA em DF será a COLUNA DE PARTIÇÃO então crie a tabela HIVE de acordo!
Por favor, comente se funciona! ou não.
--ATUALIZAR--
df.write()
.partitionBy("$partition_column")
.format("hive")
.mode(SaveMode.append)
.saveAsTable($new_table_name_to_be_created_in_hive)