以下のコマンドを使用してハイブ外部テーブルを作成しました。
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 ~]$
上記では、この DB に作成されたテーブルがないことがわかります。私の知る限り、外部テーブルはハイブ ウェアハウスに格納されていません。はいの場合、どこに保存されますか??
しかし、最初に外部テーブルを作成してからデータをロードすると、内部のファイルを見ることができます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
では、外部テーブルの正確な動作は何ですか?? usingLOCATION
キーワードを作成すると、どこに保存さload
れHDFS
ますか。