Невозможно обменять раздел куста с помощью spark sql даже после использования enableHiveSupport () - PullRequest
1 голос
/ 06 июля 2019

Я пытаюсь вставить инкрементные данные в базовую таблицу кустов.Для этого я подготовил данные в своей промежуточной базе данных и сохранил их в таблице с точным ddl моей базовой таблицы.Чтобы переместить данные из промежуточной в базу, я пробую «раздел Exchange» в таблице кустов из spark.sql, как показано ниже.

Alter table base.basetable drop partition (vehicle='BIKE');
ALTER TABLE base.basetable EXCHANGE PARTITION (vehicle='BIKE') WITH TABLE staging.stagingtable;

Но я вижу исключение:

org.apache.spark.sql.catalyst.parser.ParseException:
Operation not allowed: ALTER TABLE EXCHANGE PARTITION(line 1, pos 0)
== SQL ==
ALTER TABLE base.basetable (vehicle='BIKE') WITH TABLE staging.stagingtable
^^^

Это похоже на то, что spark sql не поддерживает "раздел Exchange", хотя я установил enableHiveSupport() в своей программе:

val spark  = SparkSession.builder().config(conf).master("yarn").enableHiveSupport().config("hive.exec.dynamic.partition", "true").config("hive.exec.dynamic.partition.mode", "nonstrict").getOrCreate()

Не должен enableHiveSupport() предоставлять мне всю поддержку и доступдля запросов Hive?

Я могу сделать insert overwrite base.basetable partition(vehicle) select * from staging.stagingtable where vehicle='BIKE'

Некоторые из наших таблиц содержат огромные данные, и если функция "Раздел Exchange" не работает в spark sql.Кто-нибудь может дать мне знать, как я могу поменять раздел в этом случае?

1 Ответ

1 голос
/ 06 июля 2019

В сообщении об ошибке сообщается ответ. Такие операции НЕ поддерживаются через spark sql.

...