The goal is to destroy a Hive schema but keep the data underneath.
Given a Hive external table, created for example with script 1, it can be dropped with script 2. This deletes the data (removes the folder /user/me/data/
). This folder has to remain for use in other projects.
A long search does not yield anything so far...
Script 1: Create an external table
CREATE EXTERNAL TABLE external_hive_table(
column1 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY
'\t'
STORED AS TEXTFILE
LOCATION
'/user/me/data/'
TBLPROPERTIES (
"skip.header.line.count"="1");
Script 2: Drop external table (drop data)
ALTER TABLE
external_hive_table
SET TBLPROPERTIES (
'EXTERNAL'='FALSE');
DROP TABLE external_hive_table;
Edit: Script 3: Drop external table (keep data)
DROP TABLE external_hive_table;
Dropping an external table removes all table-related metadata. It doesn't delete the external data.
External tables are stored outside the warehouse directory. They can access data stored in sources such as remote HDFS locations or Azure Storage Volumes. Whenever we drop the external table, then only the metadata associated with the table will get deleted, the table data remains untouched by Hive.
Use only this statement (without alter table):
DROP TABLE external_hive_table;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With