Hive外部表 內部表關聯資料

2022-03-31 05:07:26 字數 1988 閱讀 2513

create table page_view(

viewtime int,

userid bigint,

page_url string,

referrer_url string,

ip string comment 'ip address of the user')

comment 'this is the page view table'

partitioned by(dt string, country string)

row format delimited

fields terminated by '\001'

collection items terminated by '\002'

map keys terminated by '\003'

stored as textfile;

這裡建立了表page_view,有表的注釋,乙個欄位ip的注釋,分割槽有兩列,分別是dt和country。

[row format delimited]關鍵字,是用來設定建立的表在載入資料的時候,支援的列分隔符。

不同列之間用乙個'\001'分割,

集合(例如array,map)的元素之間以'\002'隔開,

map中key和value用'\003'分割。

[stored as file_format]關鍵字是用來設定載入資料的資料型別,預設是textfile,如果檔案資料是純文字,就是使用 [stored as textfile],然後從本地直接拷貝到hdfs上,hive直接可以識別資料。

如果資料已經存在hdfs的'/user/hadoop/warehouse/page_view'上了,如果想建立表,指向這個路徑,就需要建立外部表:

create external table page_view(

viewtime int,

userid bigint,

page_url string,

referrer_url string,

ip string comment 'ip address of the user',

country string comment 'country of origination')

comment 'this is the staging page view table'

row format delimited fields terminated by '\054'

stored as textfile

location '/user/hadoop/warehouse/page_view';

建立表,有指定external就是外部表,沒有指定就是內部表,內部表在drop的時候會從hdfs上刪除資料,而外部表不會刪除。

外部表和內部表一樣,都可以有分割槽,如果指定了分割槽,那外部表建了之後,還要修改表新增分割槽。

外部表如果有分割槽,還可以載入資料,覆蓋分割槽資料,但是外部表刪除分割槽,對應分割槽的資料不會從hdfs上刪除,而內部表會刪除分割槽資料。

-- 這種需要先建立分割槽

use test;

alter table fct_path_list_off_5levels partition (date="2017-09-14") set location 'hdfs://nameservice1/user/hive/warehouse/test.db/fct_path_list_off_5levels/date=2017-09-14';

-- 建立分割槽的時候指定資料檔案

use test;

alter table fct_path_list_off_5levels add partition (date="2017-09-14") location 'hdfs://nameservice1/user/hive/warehouse/test.db/fct_path_list_off_5levels/date=2017-09-14';

Hive內部表 外部表

內部表 外部表 未被external修飾的是內部表 managed table 被external修飾的為外部表 external table 區別 內部表資料由hive自身管理,外部表資料由hdfs管理 內部表資料儲存的位置是hive.metastore.warehouse.dir 預設 user...

hive外部表和內部表

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

Hive內部表 外部表區別

hive內部表 外部表區別自不用說,可實際用的時候還是要小心。1.內部表 sql view plain copy print create table tt name string age string location input table data 此時,會在hdfs上新建乙個tt表的資料存放...