2

以下のコマンドを使用してハイブ外部テーブルを作成しました。

 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キーワードを作成すると、どこに保存さloadHDFSますか。

4

1 に答える 1