1.內部表指hive建立並通過load data inpath進資料庫的表,這種表可以理解為資料和表結構都儲存在一起的資料表。當你通過drop table table_name 刪除元資料中表結構的同時,表中的資料也同樣會從hdfs中被刪除。
[sql]view plain
copy
create
table
new_hbase_table(rowkey string, x
int, y
int)
stored by
'org.apache.hadoop.hive.hbase.hbasestoragehandler'
with
serdeproperties (
= ":key,cf:x,cf:y"
);
sethive.hbase.bulk=
true
; insert
overwrite
table
new_hbase_table
select
rowkey_expression, x, y
from
...any_hive_query...;
這裡在hive中會將hbase的資料載入過來,並且儲存相應的結構
2.外部表指在表結構建立以前,資料已經儲存在hdfs中了,通過建立表結構,將資料格式化到表的結構裡。當drop table table_name 的時候,hive僅僅會刪除元資料的表結構,而不會刪除hdfs上的檔案,所以,相比內部表,外部表可以更放心大膽的使用。
[sql]view plain
copy
create
external
table
hb_range_keys(transaction_id_range_start string)
row format serde
'org.apache.hadoop.hive.serde2.binarysortable.binarysortableserde'
stored as
inputformat
'org.apache.hadoop.mapred.textinputformat'
outputformat
'org.apache.hadoop.hive.ql.io.hivenullvaluesequencefileoutputformat'
location '/tmp/hb_range_keys'
; insert
overwrite
table
hb_range_keys
select
transaction_id
from
(select
transaction_id
from
transactions
tablesample(bucket 1 out
of10000
ontransaction_id) s
order
bytransaction_id
limit 10000000) x
where
(row_sequence() % 910000)=0
order
bytransaction_id
limit 11;
這裡只儲存資料的結構,應該就是1---910000,910001---2*910000...這樣的乙個分割槽結構
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...
Hive 內部表和外部表
針對於hive 的 建庫建表操作建庫 內部表 也叫管理表和臨時表 外部表表的操作 建庫 建立名為 test 的資料庫 僅當不存在是才建立 新增備註資訊 test database create database if not exists test comment this is a databas...