發布時間: 2019-06-27 14:54:58
本次記錄hive當中最常用的一些語句,助你在hive操作能快速入手。通過常用的SQL語句能對Hive更加理解。本次實例都是一些針對表的管理。包括外部表,內部表,分區表,分桶表。
?
簡單的hive sql語句
#查詢數據庫
show databases;
#查詢表
show tables;
#使用數據庫
use database_name;
#查看表結構
desc table_name;
#刪除表
drop table table_name;
創建表
格式:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name?[LOCATION hdfs_path] # 向表里加載數據,hdfs_path是一個hdfs上的目錄,不能是文件,hive會依據默認配置的hdfs路徑,自動將整個目錄下的文件都加載到表中。
?案例實操
(1)普通創建表
? create table if not exists student2(
id int, name string
)
row format delimited fields terminated by '\t'
stored as textfile
location '/user/hive/warehouse/student2';
(2)根據查詢結果創建表(查詢的結果會添加到新創建的表中)??
create table if not exists student3
as select id, name from student;
(3)根據已經存在的表結構創建表??
create table if not exists student4 like student;?
(4)查詢表的類型
hive (default)> desc formatted student2;
Table Type: MANAGED_TABLE
?外部表
1)理論
因為表是外部表,所有 Hive 并非認為其完全擁有這份數據。 刪除該表并不會刪除掉這份數據,不過描述表的元數據信息會被刪除掉。
2)管理表和外部表的使用場景:
每天將收集到的網站日志定期流入 HDFS 文本文件。在外部表(原始日志表)的基礎上做大量的統計分析,用到的中間表、結果表使用內部表存儲,數據通過 SELECT+INSERT進入內部表
使用復雜類型創建表?
create external table if not exists T2(
? id int,
? course array<string>,
? score map<string,int>
?)
?row format
?delimited fields terminated by ','
? collection items terminated by '|'
? map keys terminated by ':'
?stored as textfile;
?# 數據文件內容
?1001,語文|數學|英語,語文|56,語文:102|數學:2033|英語:30
?1002,語文|數學|英語,語文|156,語文:120|數學:2033|英語:30
?1003,語文|數學|英語,語文|1156,語文:210|數學:3320|英語:30
?1004,語文|數學|英語,語文|1156,語文:2210|數學:203|英語:30
?1005,語文|數學|英語,語文|5116,語文:22210|數學:230|英語:30
?# 導入數據文件
?load data local inpath '/home/datanode/hiveTest/test01' overwrite into table t2;
創建一個帶分區的內部表?
create table if not exists T3(
? id int,
? name string
?)
?partitioned by (classid int)
?row format
?delimited fields terminated by ','
?stored as textfile;
?創建一個帶桶的內部表?
create table T4(
? id int ,
? name string,
? sex string,
? age int
?)
?partitioned by (city string)
?clustered by(age) sorted by(name) into 5 buckets
?row format
?delimited fields terminated by ','
?stored as textfile;
以上是hive針對表進行操作。請把每一個實例做個筆記。方便日??焖僬业?。
上一篇: Python培訓方面的一些基本知識