hive外部表和內部表

2021-06-13 05:15:19 字數 1801 閱讀 9161

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...