hive的常用操作
1、hive的數據類型
tinyint/smallint/int/bigint tinyint:從 0 到 255 的整型數據 smallint:從 0 到 65535 的整型數據 int:從 0 到 4294967296 的整型數據 bigint:所有數字 float/double boolean string
date
2、基本操作
顯示所有庫:show databases;
創建庫:create database media_pro;
切換到指定庫:use media_pro;
查看表結構:desc formatted t_pro_user_list;
創建分區表:
create table OUFEI_CHARGE_ORDERINFO_LOG
(state_date string,
create_date date,
sendtimes int) row format delimited fields terminated by ‘\t‘;
3、進階操作
①、分區表
create table OUFEI_CHARGE_ORDERINFO_LOG (state_date string, create_date date, sendtimes int) partitioned by (logdate string) row format delimited fields terminated by ‘\t‘;
這種正常的表存放的目錄就是你當前庫目錄的下級路徑:
上圖中的標誌的分別是:分區字段、表所在庫、表所在路徑、表類型
②、外部表
create external table t_detail
(state_date string,
create_date date,
sendtimes int)
partitioned by (logdate string)row format delimited fields terminated by ‘\t‘ location ‘/hive_exterdir/‘;
//如果不加location的話,其實就是個內部表
上圖的標紅的分別是:分區字段、指定數據文件路徑(後面將要導入的數據放進來就行load一下就行)、表的類型
外部表名在hdfs上是看不見的
③、導數load in datapath
內部表導入:
load data inpath ‘/userdata/order.txt‘ into table oufei_charge_orderinfo_log partition (logdate=‘2017-06-16‘);
這裏表示將userdata文件夾下的order.txt文件導入表中,並以‘2017-06-16‘作為分區字段的值;這裏如果userdata下沒有文件夾的話,可以把後面的文件名省略;
外部表導入:
load data inpath ‘/hive_exterdir/detail.txt‘ into table t_detail partition (logdate=‘2017-06-16‘);
導入成功後,你會發現之前的detail.txt文件會被移動到分區目錄下
④、總結:內部表和外部表的區別:
1、在導入數據到外部表,數據並沒有移動到自己的數據倉庫目錄下,也就是說外部表中的數據並不是由它自己來管理的!內部表則不一樣;
2、在刪除表的時候,Hive將會把屬於表的元數據和數據全部刪掉;而刪除外部表的時候,Hive僅僅刪除外部表的元數據,數據是不會刪除的!
那麽,應該如何選擇使用哪種表呢?在大多數情況沒有太多的區別,因此選擇只是個人喜好的問題。但是作為一個經驗,如果所有處理都需要由Hive完成,那麽你應該創建內部表,否則使用外部表!
hive的常用操作