Hive:即使 table 是外部的,源数据也会移动到 Hive 数据仓库

Hive: source data gets moved to hive datawarehouse even when table is external

在 Hue --> Hive 查询浏览器中,我在 Hive 中创建了一个外部 table,并使用以下语句将数据从我的一个 CSV 文件加载到其中:

CREATE EXTERNAL TABLE movies(movieId BIGINT, title VARCHAR(100), genres VARCHAR(100)) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE;

LOAD DATA INPATH '/user/admin/movie_data/movies' INTO TABLE movies;

我看到源文件 "movies" 从 HDFS 中消失并移动到配置单元数据仓库。我的印象是外部 table 仅作为原始源数据的 link。

外部 table 是否不应该独立于源数据 - 就像我删除 table 一样,源文件仍然存在?如何创建这样的外部 table?

外部 tables 将数据存储在我们创建 table 时提到的 hdfs 位置。因此,如果我们在创建 table 时不提供位置,它将默认为仓库 hdfs 文件夹。 尝试 运行 "use mydatabase_name;show create table mytable_name;" 获取 table 定义以查看它指向的位置。 如果您需要默认位置以外的 hdfs 位置,您需要在创建 table.Refer 下面的查询时提及它 [创建外部 table 测试(col1 字符串)位置 '/data/database/tablename';] 其次,LOAD INPATH 不会将数据从 INPATH 移动到外部 hdfs 位置,它会将数据从 INPATH 插入到您的 table table(更像是将数据从 inpath 复制到 tables 的 hdfs 位置)