Hive 內部表和外部表

2021-10-10 21:27:57 字數 2323 閱讀 6470

針對於hive 的 建庫建表操作建庫

內部表(也叫管理表和臨時表)

外部表表的操作

建庫

建立名為 test 的資料庫(僅當不存在是才建立),新增備註資訊 test database:

create database if not exists test

comment 'this is a database for test';

檢視資料庫列表(名稱模糊匹配):

show databases like 't*';

oktest

test001

time taken: 0.016 seconds,fetched: 2 row(s)

describe database  命令檢視此資料庫資訊:

describe  database  test;

oktest this is a database for test hdfs:// hadoop201:50070/warehouse/test.db

上述命令可見,test資料庫在hdfs上的儲存位置是 hdfs://hadoop201:50070/warehouse/test.db,開啟hadoop的 web頁面,檢視hdfs目錄。

新建資料庫的資料夾都在/hive/warehouse下面,這個是由 hive/conf/hive-site.xml檔案中 hive.metastore.warehouse.dir設定的

內部表

按照表資料的生命週期,可以將表分為內部表和外部表兩類;

內部表也叫管理表或臨時表,該型別表的生命週期時由hive控制的,預設情況下資料都存放在  /user/hive/warehouse 下面;

刪除表時資料會被刪除;

以下命令建立的計算內部表

create table t6(id int,name string)

row format delimited

fields terminated by ',';

向t6表新增一條記錄:

insert into t6 values(101,'a101');

使用hadoop命令檢視 hdfs, 可見 t6 表有對應的資料夾,裡面的檔案儲存著該錶資料

(base) xx@:$hadoop fs -ls /warehouse/bingou

found 4 items

drwxr-xr-x - xubin supergroup 0 2020-11-20 15:21 /warehouse/bingou/dwd

drwxr-xr-x - xubin supergroup 0 2020-11-25 18:20 /warehouse/bingou/dws

drwxr-xr-x - xubin supergroup 0 2020-11-24 16:14 /warehouse/bingou/dwt

drwxr-xr-x - xubin supergroup 0 2020-11-26 11:26 /warehouse/bingou/ods

檢視這個資料夾下的檔案資訊,也就是表資料:

(base) xubin@:$hadoop fs -cat /warehouse/bingou/ods/ods_start_log/dt=2020-11-14/startlog-.1605318076716

執行命令 drop table 表名, 再次檢視相關表對應檔案下的資料,發現整個資料夾都不存在了

外部表

建立表的sql語句中加上 external,建立的就是外部表了;

外部表的資料生命週期不受 hive 控制;

刪除外部表的時候不會刪除資料;

外部表的資料,可以同時作為多個外部表的資料來源共享使用;

接下來開始實踐,下面是建表語句:

create external table t7(id int, name string)

row format delimited

fields terminated by ','

location '/data/external_t7';

檢視 hdfs檔案,再刪除drop t7,再檢視檔案是否存在,發現存在,因此,在實際生產業務系統開發中

hive外部表和內部表

1.內部表指hive建立並通過load data inpath進資料庫的表,這種表可以理解為資料和表結構都儲存在一起的資料表。當你通過drop table table name 刪除元資料中表結構的同時,表中的資料也同樣會從hdfs中被刪除。sql view plain copy create ta...

Hive內部表和外部表

總結一下hive的內部表和外部表以及兩者的區別。平時建立的普通表為內部表 create table test internal id string comment id name string comment 名字 comment 測試內部表 row format delimited fields ...

Hive 外部表和內部表

外部表說明 外部表因為是指定其他的hdfs路徑的資料載入到表當中來,所以hive表會認為自己不完全獨佔這份資料,所以刪除hive表的時候,資料仍然存放在hdfs當中,不會刪掉 管理表和外部表的使用場景 操作案例 分別建立老師與學生表外部表,並向表中載入資料 建立老師表 create external...