1. 程式人生 > 其它 >hive的常用函式和建表語句

hive的常用函式和建表語句

一、hive的基礎建表語句

CREATE [external] TABLE [IF NOT EXISTS] table_name (--[external]建外部表,[IF NOT EXISTS]如果存在就不重新建表
  id string,
  sfsb string
)
COMMENT 'emp' --這張表加了註釋(emp) row format delimited fields terminated
by ',' --列分割方式,預設為(\u001) ascii表上的1 stored as orc; --儲存方式,可以省略,預設方式textfile location '/los/t01_loan_tmp
'; ---存放地址

二、hive基本知識

#內部表:

create table fzname
(
id int,
name string,
age int,
tel string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','--分隔符--可以省略不寫,預設是'\t',製表符tab -----通過插入的方式更新資料,可以不寫。
---通過 load data local 方式 匯入資料到表中,那麼一定要 保證 分隔符和 檔案中分隔符保持一隻。
STORED AS TEXTFILE;--以什麼格式儲存--可以省略不寫,不寫就以文字方式儲存

----備註---------------
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\n’
* ROW FORMAT
* TERMINATED BY ‘\t’ 每行資料中欄位的分隔符
* LINES TERMINATED BY ‘\n’ 行的分隔符,不指定的時候預設為‘\n’

建立好的內部表會在hadoop上面的 /user/hive/warehouse 下某個資料庫下生成一個資料夾

hive工具在hadoop上面的專屬路徑(hive倉庫路徑) :/user/hive/warehouse

建立的資料庫、表都會在這個路徑下,放的資料也會在這個路徑下

#外部表:

create external table fz_external_name
(id int,
name string,
age int,
tel string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
location '/mytable/fz_external_name';

EXTERNAL 關鍵字可以讓使用者建立一個外部表,在建表的同時指定一個指向實際資料的路徑(LOCATION),
Hive 建立內部表時,會將資料移動到資料倉庫指向的路徑;/user/hive/warehouse
若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。
在刪除表的時候,內部表的元資料(表名稱、表結構)和資料(那個資料夾)會被一起刪除,
而外部表只刪除元資料,不刪除資料。

三、hive的儲存方式

1、textfile
預設格式;
儲存⽅式:⾏儲存;
磁碟開銷⼤ 資料解析開銷⼤;
使⽤這種⽅式,hive不會對資料進⾏切分,從⽽⽆法對資料進⾏並⾏操作。
2、sequencefile
⼆進位制⽂件,以<key,value>的形式序列化到⽂件中;
儲存⽅式:⾏儲存;
可分割 壓縮;
⼀般選擇block壓縮;
優勢是⽂件和Hadoop api中的mapfile是相互相容的
3、refile
儲存⽅式:資料按⾏分塊,每塊按照列儲存;
壓縮快 快速列存取;
讀記錄儘量涉及到的block最少;
讀取需要的列只需要讀取每個row group 的頭部定義;
讀取全量資料的操作 效能可能⽐sequencefile沒有明顯的優勢,
4、orc
儲存⽅式:資料按⾏分塊,每塊按照列儲存;
壓縮快 快速列存取;
效率⽐rcfile⾼,是rcfile的改良版本。
5、parquet
類似於orc,相對於orc⽂件格式,hadoop⽣態系統中⼤部分⼯程都⽀持parquet⽂件

更多瞭解:https://zhuanlan.zhihu.com/p/102502175  --HIVE 常用函式總結