Я использую
drop table <table_name>
Если я воссоздаю таблицу с той же схемой и именем, я верну старые данные. Следует ли мне удалить каталог таблицы из файловой системы hdfs, чтобы полностью избавиться от данных?
Я использую
drop table <table_name>
Если я воссоздаю таблицу с той же схемой и именем, я верну старые данные. Следует ли мне удалить каталог таблицы из файловой системы hdfs, чтобы полностью избавиться от данных?
Вы должны изменить внешнюю таблицу на внутреннюю, прежде чем удалить ее:
пример
beeline> ALTER TABLE $tablename SET TBLPROPERTIES('EXTERNAL'='False'); // make the table as internal
а потом:
beeline> drop table $tablename; //if you drop the table data will be dropped as well.
Сначала получите путь к таблице, используя следующую команду:
hive> описать отформатированное имя_базы_данных.имя_таблицы;
Затем скопируйте все местоположение, указанное в описании, например: /user/hive/warehouse/database_name.db/table_name
После этого используйте следующую команду для усечения всех данных из данной таблицы:
***hive> dfs -rmr /user/hive/warehouse/database_name.db/table_name;***
OR
***hive> dfs -rm -r /user/hive/warehouse/database_name.db/table_name;***
Затем вы можете полностью стереть его, используя команду DROP TABLE.
Хотя я согласен с pensz, небольшое изменение, вам не нужно бросать стол. Просто замените внешний файл hdfs любым новым файлом, который вы хотите (структура замененного файла должна быть такой же), и когда вы сделаете выбор * предыдущей таблицы, вы заметите, что в ней будут новые данные, а не старые один.
Внешние таблицы в основном обозначают только схему данных и расположение файла. Вы можете добавить много файлов в одно и то же место, и ваша таблица автоматически будет содержать все данные, относящиеся к этим файлам. Точно так же вы можете заменить любые данные, и ваша таблица автоматически отразит это.
Нет необходимости удалять каталог в hdfs, за исключением того, что вам нужно больше места на hdfs.
Если вы хотите заменить новые данные, вам просто нужно заменить файл в hdfs.
Если вы хотите использовать имя таблицы для других целей, отбросьте таблицу и удалите каталог в hdfs.
На самом деле, я думаю, что это очень удобная функция, с помощью которой вы можете изменить схему своей таблицы (например, вы хотите изменить имя поля или объединить два поля в одно поле) без потери данных.
если это внешняя таблица, удаление таблицы означает, что вы просто удаляете схему
поэтому вам нужно вручную удалить файл из HDFS
или создайте новую таблицу и укажите другое местоположение файла в свойствах таблицы
Действительно, удаление ВНЕШНИХ ТАБЛИЦ не приведет к удалению данных.
Вы можете использовать TRUNCATE TABLE, чтобы избавиться от данных.
Документ здесь: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TruncateTable
Затем используйте DROP TABLE, чтобы удалить схему, если это необходимо.