Я создал внешнюю таблицу улья, используя следующую команду:
use hive2;
create external table depTable (depId int comment 'This is the unique id for each dep', depName string,location string) comment 'department table' row format delimited fields terminated by ","
stored as textfile location '/dataDir/';
Теперь, когда я просматриваю HDFS, я вижу БД, но внутри склада нет depTable
.
[cloudera@quickstart ~]$ hadoop fs -ls /user/hive/warehouse/hive2.db
[cloudera@quickstart ~]$
Выше видно, что в этой БД не создано ни одной таблицы.Насколько я знаю, внешние таблицы не хранятся на складе улья. Так я прав?Если да, то где он хранится ??
Но если я сначала создаю внешнюю таблицу, а затем загружаю данные, я могу увидеть файл внутри hive2.db
.
hive> create external table depTable (depId int comment 'This is the unique id for each dep', depName string,location string) comment 'department table' row format delimited fields terminated by "," stored as textfile;
OK
Time taken: 0.056 seconds
hive> load data inpath '/dataDir/department_data.txt' into table depTable;
Loading data to table default.deptable
Table default.deptable stats: [numFiles=1, totalSize=90]
OK
Time taken: 0.28 seconds
hive> select * from deptable;
OK
1001 FINANCE SYDNEY
2001 AUDIT MELBOURNE
3001 MARKETING PERTH
4001 PRODUCTION BRISBANE
Теперь, если я запускаю запрос hadoop fs
, я вижу эту таблицу в базе данных, как показано ниже:
[cloudera@quickstart ~]$ hadoop fs -ls /user/hive/warehouse/hive2.db
Found 1 items
drwxrwxrwx - cloudera supergroup 0 2019-01-17 09:07 /user/hive/warehouse/hive2.db/deptable
Если я все еще удаляю таблицу, я вижу таблицув HDFS, как показано ниже:
[cloudera@quickstart ~]$ hadoop fs -ls /user/hive/warehouse/hive2.db
Found 1 items
drwxrwxrwx - cloudera supergroup 0 2019-01-17 09:11 /user/hive/warehouse/hive2.db/deptable
Итак, каково точное поведение внешних таблиц?Когда я создаю с использованием ключевого слова LOCATION
, где оно хранится, и когда я создаю с помощью оператора load
, почему оно сохраняется в HDFS
и после удаления почему оно не удаляется.