Операция не разрешена при создании или вставке таблицы Hive с разделами из Spark - PullRequest
0 голосов
/ 01 июня 2018

Я использую Spark 2.2 и пытаюсь создать таблицу Hive на основе фрейма данных.

Мне удалось создать новую таблицу Hive с данными, используя только:

result.write.mode(SaveMode.Overwrite).saveAsTable("db.resultTable")

Когда я пытаюсь сделать то же самое с разделами:

result.write.mode(SaveMode.Overwrite).partitionBy("year", "month", "day").saveAsTable("db.resultTable")

Я всегда получаю сообщение об ошибке:

Exception in thread "main" org.apache.spark.sql.AnalysisException: Operation not allowed: ALTER TABLE RECOVER PARTITIONS only works on table with location provided: `db`.`resultTable`;

Примечание: Хотя ошибка возниклатаблица с правильными столбцами.Он также создал разделы, и в таблице есть место с файлами Parquet (/user/hive/warehouse/db.db/resultTable/year=2017/month=1/day=1).Но он содержит нет данных.

Я пытался найти некоторые ответы, но пока не нашел ни одного.По этой теме я все сделал нормально.(Я также установил hive.exec.dynamic.partition и hive.exec.dynamic.partition.mode)

Кто-нибудь знает, что я пропускаю или делаю неправильно?

1 Ответ

0 голосов
/ 03 октября 2018

Не сохраняйте его как таблицу, а сохраняйте как файлы в каталоге HDFS.

result.write.mode(SaveMode.Overwrite).partitionBy("year", "month", "day").parquet("/path/to/table")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...