Вибачте, що пізно написав пост, але я не бачу прийнятої відповіді
df.write().saveAsTable
кине AnalysisException
і не сумісний з таблицею HIVE.
Зберігання DF як df.write().format("hive")
слід робити!
Однак, якщо це не спрацьовує, тоді, маючи на увазі попередні коментарі та відповіді, це найкраще рішення, на мій погляд (хоча відкрито для пропозицій).
Найкращий підхід - це явне створення таблиці HIVE (включаючи таблицю PARTITIONED),
def createHiveTable: Unit ={
spark.sql("CREATE TABLE $hive_table_name($fields) " +
"PARTITIONED BY ($partition_column String) STORED AS $StorageType")
}
зберегти DF як тимчасову таблицю,
df.createOrReplaceTempView("$tempTableName")
та вставте до таблиці РОЗДІЛЕНИХ УЛИЦ:
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)
Offcourse останній рядок в DF буде в розподільному стовпчики таким чином , створити Hive таблиці відповідно!
Будь ласка, коментуйте, якщо це працює! чи ні.
- UPDATE--
df.write()
.partitionBy("$partition_column")
.format("hive")
.mode(SaveMode.append)
.saveAsTable($new_table_name_to_be_created_in_hive)