Lamento escribir tarde a la publicación, pero no veo una respuesta aceptada.
df.write().saveAsTablearrojará AnalysisExceptiony no es compatible con la mesa HIVE.
¡Almacenar DF como df.write().format("hive")debería ser el truco!
Sin embargo, si eso no funciona, siguiendo los comentarios y respuestas anteriores, esta es la mejor solución en mi opinión (aunque abierta a sugerencias).
El mejor enfoque es crear explícitamente la tabla HIVE (incluida la tabla PARTICIONADA),
def createHiveTable: Unit ={
spark.sql("CREATE TABLE $hive_table_name($fields) " +
"PARTITIONED BY ($partition_column String) STORED AS $StorageType")
}
guardar DF como tabla temporal,
df.createOrReplaceTempView("$tempTableName")
e inserte en la tabla 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)
Por supuesto, la ÚLTIMA COLUMNA en DF será la COLUMNA DE PARTICIÓN así que cree la tabla HIVE en consecuencia!
¡Por favor comente si funciona! o no.
--ACTUALIZAR--
df.write()
.partitionBy("$partition_column")
.format("hive")
.mode(SaveMode.append)
.saveAsTable($new_table_name_to_be_created_in_hive)