1. 程式人生 > >Hadoop Hive sql語法詳解1-認識hive及DDL操作

Hadoop Hive sql語法詳解1-認識hive及DDL操作

轉載自:http://www.aboutyun.com/thread-7324-1-1.html

1.認識hive:
Hive 是基於Hadoop 構建的一套資料倉庫分析系統,它提供了豐富的SQL查詢方式來分析儲存在Hadoop 分散式檔案系統中的資料,可以將結構

化的資料檔案對映為一張資料庫表,並提供完整的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行執行,通過自己的SQL 去查詢分析需

要的內容,這套SQL 簡稱Hive SQL,使不熟悉mapreduce 的使用者很方便的利用SQL 語言查詢,彙總,分析資料。而mapreduce開發人員可以把

己寫的mapper 和reducer 作為外掛來支援Hive 做更復雜的資料分析。




     它與關係型資料庫的SQL 略有不同,但支援了絕大多數的語句如DDL、DML 以及常見的聚合函式、連線查詢、條件查詢。HIVE不適合用於聯機

online)事務處理,也不提供實時查詢功能。它最適合應用在基於大量不可變資料的批處理作業。

HIVE的特點:可伸縮(在Hadoop的叢集上動態的新增裝置),可擴充套件,容錯,輸入格式的鬆散耦合。


2.  DDL 操作
建立簡單表
hive> CREATE TABLE pokes (foo INT, bar STRING); 


複雜一下如下:
建立外部表:

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,

     page_url STRING, referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User',
     country STRING COMMENT 'country of origination')
COMMENT 'This is the staging page view table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
STORED AS TEXTFILE
LOCATION '<hdfs_location>';

建分割槽表:

CREATE TABLE par_table(viewTime INT, userid BIGINT,

     page_url STRING, referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(date STRING, pos STRING)
ROW FORMAT DELIMITED ‘\t’
   FIELDS TERMINATED BY '\n'
STORED AS SEQUENCEFILE;

建Bucket表

CREATE TABLE par_table(viewTime INT, userid BIGINT,
     page_url STRING, referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(date STRING, pos STRING)
CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
ROW FORMAT DELIMITED ‘\t’
   FIELDS TERMINATED BY '\n'
STORED AS SEQUENCEFILE;



建立表並建立索引欄位ds
hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING); 

複製一個空表
CREATE TABLE empty_key_value_store
LIKE key_value_store;

例子
create table  user_info (user_id int, cid string, ckid string, username string) 
row format delimited 
fields terminated by '\t'
lines terminated by '\n';
匯入資料表的資料格式是:欄位之間是tab鍵分割,行之間是斷行。

及要我們的檔案內容格式:

100636  100890  c5c86f4cddc15eb7        yyyvybtvt
100612  100865  97cc70d411c18b6f        gyvcycy
100078  100087  ecd6026a15ffddf5        qa000100


顯示所有表
hive> SHOW TABLES;
按正條件(正則表示式)顯示錶,
hive> SHOW TABLES '.*s';