Как обрезать данные и удалить все разделы из таблицы Hive с помощью Spark - PullRequest
0 голосов
/ 20 мая 2019

Как я могу удалить все данные и удалить все разделы из таблицы Hive, используя Spark 2.3.0

truncate table my_table; // Deletes all data, but keeps partitions in metastore

alter table my_table drop partition(p_col > 0) // does not work from spark

Единственное, что работало для меня, - это итерация по show partitions my_table, замена / на , и удаление каждого раздела по отдельности. Но должен быть более чистый путь. И это даже не работает, если столбцы разделов имеют тип string. Есть предложения?

1 Ответ

0 голосов
/ 20 мая 2019

Hive имеет два типа таблиц (управляемые таблицы и внешние таблицы). Управляемые таблицы создаются для целей, в которых Hive управляет всей схемой, а также данными. Таким образом, удаление таблицы, управляемой Hive, удаляет схему, метаданные и данные. Однако внешняя таблица содержит данные, которые находятся где-то еще (скажем, во внешнем источнике, таком как S3). Таким образом, удаление таблицы только удаляет метаданные и таблицу, но данные остаются нетронутыми в источнике.

В вашем случае, когда вы усекаете таблицу, Hive должен поддерживать метасторное хранилище, так как таблица все еще присутствует в Hive, удаляются только данные. Кроме того, metastore не хранит данные, поскольку содержит только информацию о схеме и другие связанные данные таблицы.

Я надеюсь, что это в какой-то степени отвечает.

РЕДАКТИРОВАТЬ1:

Похожие сообщения

...