Як додати розділ до зовнішньої таблиці в Hive , як я можу оновити / скинути його?
Відповіді:
Ви можете оновити розділ Hive, наприклад, наприклад:
ALTER TABLE logs PARTITION(year = 2012, month = 12, day = 18)
SET LOCATION 'hdfs://user/darcy/logs/2012/12/18';
Ця команда не переміщує старі дані, а також не видаляє старі дані. Він просто встановлює розділ на нове місце.
Ви можете скинути розділ
ALTER TABLE logs DROP IF EXISTS PARTITION(year = 2012, month = 12, day = 18);
Сподіваюся, це допоможе!
крім того, ви можете видалити кілька розділів з одного оператора ( Видалення декількох розділів у Impala / Hive ).
Витяг зверху посилання:
hive> alter table t drop if exists partition (p=1),partition (p=2),partition(p=3);
Dropped the partition p=1
Dropped the partition p=2
Dropped the partition p=3
OK
РЕДАКТУВАТИ 1:
Крім того, ви можете скинути групу за допомогою знака умови (>, <, <>), наприклад:
Alter table t
drop partition (PART_COL>1);
Ви можете скопіювати файли в папку, де знаходиться зовнішній розділ, або використовувати
INSERT OVERWRITE TABLE tablename1 PARTITION (partcol1=val1, partcol2=val2...)...
заява.
Вам також може знадобитися активувати базу даних, що містить таблицю
use [dbname]
в іншому випадку ви можете отримати помилку (навіть якщо ви вказали базу даних, тобто dbname.table)
ПОМИЛКА Помилка виконання, код повернення 1 з org.apache.hadoop.hive.ql.exec.DDLTask. Неможливо змінити розділ. Неможливо змінити розділи, оскільки таблиця або база даних не існує.
spark.sql()
, яка підтримує лише одну команду за раз (і spark.sql("use <schema>")
після spark.sql("alter table ...")
чого не працює, особливо для випадків, коли ви хочете змінити формат розділу, який заборонено в add розділ.
Alter table table_name drop partition (partition_name);
use <schema>
спочатку, інакше це не вдасться,FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter partition. Unable to alter partitions because table or database does not exist.
навіть якщо таблиця існує. Отже, якщо ім’я таблиці є<schema>.<table>
, з CLI вам потрібно запуститиuse <schema>
спочатку перед зміною розташування розділу.