Я пытаюсь вставить инкрементные данные в базовую таблицу кустов.Для этого я подготовил данные в своей промежуточной базе данных и сохранил их в таблице с точным 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.Кто-нибудь может дать мне знать, как я могу поменять раздел в этом случае?