溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hive中Hql語法是什么

發(fā)布時間:2021-12-10 14:02:55 來源:億速云 閱讀:130 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下Hive中Hql語法是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Hive 是基于Hadoop 構(gòu)建的一套數(shù)據(jù)倉庫分析系統(tǒng),它提供了豐富的SQL查詢方式來分析存儲在Hadoop 分布式文件系統(tǒng)中的數(shù)據(jù),可以將結(jié)構(gòu)

化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的SQL查詢功能,可以將SQL語句轉(zhuǎn)換為MapReduce任務(wù)進行運行,通過自己的SQL 去查詢分析需

要的內(nèi)容,這套SQL 簡稱Hive SQL,使不熟悉mapreduce 的用戶很方便的利用SQL 語言查詢,匯總,分析數(shù)據(jù)。而mapreduce開發(fā)人員可以把

己寫的mapper 和reducer 作為插件來支持Hive 做更復(fù)雜的數(shù)據(jù)分析。


     它與關(guān)系型數(shù)據(jù)庫的SQL 略有不同,但支持了絕大多數(shù)的語句如DDL、DML 以及常見的聚合函數(shù)、連接查詢、條件查詢。HIVE不適合用于聯(lián)機

online)事務(wù)處理,也不提供實時查詢功能。它最適合應(yīng)用在基于大量不可變數(shù)據(jù)的批處理作業(yè)。

    HIVE的特點:可伸縮(在Hadoop的集群上動態(tài)的添加設(shè)備),可擴展,容錯,輸入格式的松散耦合。

     Hive 的官方文檔中對查詢語言有了很詳細(xì)的描述,請參考:http://wiki.apache.org/hadoop/Hive/LanguageManual ,本文的內(nèi)容大部分翻譯自該頁面,期間加入了一些在使用過程中需要注意到的事項。

1.  DDL 操作

2.  DML 操作:元數(shù)據(jù)存儲

     hive不支持用insert語句一條一條的進行插入操作,也不支持update操作。數(shù)據(jù)是以load的方式加載到建立好的表中。數(shù)據(jù)一旦導(dǎo)入就不可以修改。

3.  DQL 操作:數(shù)據(jù)查詢SQL

4.  從SQL到HiveQL應(yīng)轉(zhuǎn)變的習(xí)慣

) a  
  • REDUCE word, cnt USING  ) a  

  • REDUCE sessionid, tstamp, data USING GROUP BY t3.c2;  

5.  實際示例

創(chuàng)建一個表

CREATE TABLE u_data (
userid INT,
movieid INT,
rating INT,
unixtime STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '/t'
STORED AS TEXTFILE;


下載示例數(shù)據(jù)文件,并解壓縮
wget http://www.grouplens.org/system/files/ml-data.tar__0.gz
tar xvzf ml-data.tar__0.gz

加載數(shù)據(jù)到表中:

LOAD DATA LOCAL INPATH 'ml-data/u.data'
OVERWRITE INTO TABLE u_data;

統(tǒng)計數(shù)據(jù)總量:

SELECT COUNT(1) FROM u_data;

現(xiàn)在做一些復(fù)雜的數(shù)據(jù)分析:

創(chuàng)建一個 weekday_mapper.py: 文件,作為數(shù)據(jù)按周進行分割 
import sys
import datetime

for line in sys.stdin:
line = line.strip()
userid, movieid, rating, unixtime = line.split('/t')

生成數(shù)據(jù)的周信息

weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
print '/t'.join([userid, movieid, rating, str(weekday)])

使用映射腳本

//創(chuàng)建表,按分割符分割行中的字段值
CREATE TABLE u_data_new (
userid INT,
movieid INT,
rating INT,
weekday INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '/t';
//將python文件加載到系統(tǒng)
add FILE weekday_mapper.py;

將數(shù)據(jù)按周進行分割

INSERT OVERWRITE TABLE u_data_new
SELECT
TRANSFORM (userid, movieid, rating, unixtime)
USING 'python weekday_mapper.py'
AS (userid, movieid, rating, weekday)
FROM u_data;

SELECT weekday, COUNT(1)
FROM u_data_new
GROUP BY weekday;

處理Apache Weblog 數(shù)據(jù)

將WEB日志先用正則表達(dá)式進行組合,再按需要的條件進行組合輸入到表中
add jar ../build/contrib/hive_contrib.jar;

CREATE TABLE apachelog (
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|//[[^//]]*//]) ([^ /"]*|/"[^/"]*/") (-|[0-9]*) (-|[0-9]*)(?: ([^ /"]*|/"[^/"]*/") ([^ /"]*|/"[^/"]*/"))?",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
STORED AS TEXTFILE;

以上是“Hive中Hql語法是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI