欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Hive的語法有哪些

這篇文章主要為大家展示了“Hive的語法有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“Hive的語法有哪些”這篇文章吧。

鎮(zhèn)海網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,鎮(zhèn)海網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為鎮(zhèn)海上千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設公司要多少錢,請找那個售后服務好的鎮(zhèn)海做網(wǎng)站的公司定做!

Hive語法學習

1、hive的表分為外部表、分區(qū)表和桶

    a、外部表:Hive中的外部表和表很類似,但是其數(shù)據(jù)不是放在自己表所屬的目錄中,

    而是存放到別處,這樣的好處是如果你要刪除這個外部表,該外部表所指向的數(shù)據(jù)是

    不會被刪除的,它只會刪除外部表對應的元數(shù)據(jù);而如果你要刪除表,該表對應的所

    有數(shù)據(jù)包括元數(shù)據(jù)都會被刪除。
 b、分區(qū):在Hive中,表的每一個分區(qū)對應表下的相應目錄,所有分區(qū)的數(shù)據(jù)都是存儲

    在對應的目錄中。比如wyp表有dt和city兩個分區(qū),則對應dt=20131218,city=BJ對應表

    的目錄為/user/hive/warehouse/dt=20131218/city=BJ,所有屬于這個分區(qū)的數(shù)據(jù)都存

    放在這個目錄中。
 c、桶:對指定的列計算其hash,根據(jù)hash值切分數(shù)據(jù),目的是為了并行,每一個桶對

    應一個文件(注意和分區(qū)的區(qū)別)。比如將wyp表id列分散至16個桶中,首先對id列的

    值計算hash,對應hash值為0和16的數(shù)據(jù)存儲的HDFS目錄

    為:/user/hive/warehouse/wyp/part-00000;而hash值為2的數(shù)據(jù)存儲的HDFS 目

    錄為:/user/hive/warehouse/wyp/part-00002。

2、SORT BY 只在本機做排序,ORDER BY 全局排序,只有一個Reduce任務

3、Hive支持select查詢,

    a) Select * from user; 不執(zhí)行mapreduce任務

    b) Select count(*) from user; 執(zhí)行mapreduce任務

    c) Select * from user limit 2; 不執(zhí)行mapreduce任務

    d) Select * from user sort by user_id desc limit 2; 執(zhí)行mapreduce任務

    e) 正則列,未成功

    f) Select * from user where user_id=100636執(zhí)行帶條件查詢報錯

       Hive的語法有哪些

        問題追蹤,發(fā)現(xiàn)是hive-1.1.1的問題https://issues.apache.org/jira/browse/HIVE-12872

        解決方法:將環(huán)境變量換成hive-1.2.0,又出現(xiàn)下面問題

        Hive的語法有哪些

            表名user在hive-1.2.0中比較特殊,重新建立表user_info后查詢成功。

        建表語句:

            Create table user_info(user_id int,cid string,ckid string,username string)

             Row format delimited fields terminated by ‘\t’ lines terminated by ‘\n’;

        加載數(shù)據(jù):

                Load data local inpath ‘/opt/data.txt’ into table user_info;

    g) 將查詢結(jié)果輸出到本地目錄

            Hive的語法有哪些

            執(zhí)行mapreduce任務

    h) 分組查詢(執(zhí)行mapreduce任務)

            Hive的語法有哪些

    j) 將查詢結(jié)果輸入到另一張表中(mapreduce任務數(shù)跟字段數(shù)相同)

            Hive的語法有哪些

    k) 插入失敗,查詢的列與表的列數(shù)不同

            Hive的語法有哪些

    l) 基于Partition的查詢

            i. 一般 SELECT 查詢會掃描整個表,使用 PARTITIONED BY 子句建表,查詢就

            可以利用分區(qū)剪枝(input pruning)的特性

            ii. Hive 當前的實現(xiàn)是,只有分區(qū)斷言出現(xiàn)在離 FROM 子句最近的那個WHERE 

            子句中,才會啟用分區(qū)剪枝

    m) 加載分區(qū)數(shù)據(jù) 

            i. load data local inpath '/home/hadoop/input/hive/partitions/file1' into table logs 

            partition (dt='2001-01-01',country='GB');

    n) Hive不支持update和delete語句,看下圖

            i. Update

                Hive的語法有哪些 

            ii. Delete

                Hive的語法有哪些 

    o) Hive中insert可以編輯文件來導入數(shù)據(jù),update和delete可以重寫數(shù)據(jù)。

    p) Hive中聯(lián)合查詢(執(zhí)行一個mapreduce任務)

        Hive的語法有哪些 

    q) Join查詢時,需要注意幾個關(guān)鍵點

        i. 只支持等值join

            1. SELECT a.* FROM a JOIN b ON (a.id = b.id)

            2. SELECT a.* FROM a JOIN b 

                    ON (a.id = b.id AND a.department = b.department)

        ii. 可以 join 多于 2 個表,例如

            SELECT a.val, b.val, c.val FROM a JOIN b 

                    ON (a.key = b.key1) JOIN c ON (c.key = b.key2)

        iii. 如果join中多個表的 join key 是同一個,則 join 會被轉(zhuǎn)化為單個 map/reduce 任務

        iv. LEFT,RIGHT和FULL OUTER

            例子

                SELECT a.val, b.val FROM a LEFT OUTER JOIN b ON (a.key=b.key)

        v. 如果你想限制 join 的輸出,應該在 WHERE 子句中寫過濾條件——或是在 join 子

            句中寫

            容易混淆的問題是表分區(qū)的情況

                SELECT c.val, d.val FROM c LEFT OUTER JOIN d ON (c.key=d.key) 

                WHERE a.ds='2010-07-07' AND b.ds='2010-07-07‘

        vi. ?如果 d 表中找不到對應 c 表的記錄,d 表的所有列都會列出 NULL,包括 ds 列。

            也就是說,join 會過濾 d 表中不能找到匹配 c 表 join key 的所有記錄。這樣的話,

            LEFT OUTER 就使得查詢結(jié)果與 WHERE 子句無關(guān)

            解決辦法

                SELECT c.val, d.val FROM c LEFT OUTER JOIN d 

                    ON (c.key=d.key AND d.ds='2009-07-07' AND c.ds='2009-07-07')

        vii. LEFT SEMI JOIN

            1. LEFT SEMI JOIN 的限制是, JOIN 子句中右邊的表只能在 ON 子句中設置過濾

            條件,在 WHERE 子句、SELECT 子句或其他地方過濾都不行

    r) Hive不支持等值連接(測試hive-1.2.1支持)

        i. SQL中對兩表內(nèi)聯(lián)可以寫成:

            select * from dual a,dual b where a.key = b.key;

        ii. Hive中應為

            select * from dual a join dual b on a.key = b.key; 

            而不是傳統(tǒng)的格式:

            SELECT t1.a1 as c1, t2.b1 as c2FROM t1, t2

            WHERE t1.a2 = t2.b2

                Hive的語法有哪些 

                Hive的語法有哪些

    s) 分號字符,hql是以分號結(jié)尾,但是,對分號的認識不是很智慧    

                Hive的語法有哪些

                Hive的語法有哪些 

        解決方法:用分號的ASCII碼代替

                Hive的語法有哪些

    t) Hive不支持將數(shù)據(jù)插入現(xiàn)有的表或分區(qū)中,(已測試)

            僅支持覆蓋重寫整個表

            Insert into overwrite table a select * from b;

    u) hive不支持INSERT INTO 表 Values(), UPDATE, DELETE操作(已測試)

    v) hive支持嵌入mapreduce程序,來處理復雜的邏輯

    w) hive支持將轉(zhuǎn)換后的數(shù)據(jù)直接寫入不同的表,還能寫入分區(qū)、hdfs和本地目錄

    x) Hive加載sql文本的方法

        i. ./hive  -f  ‘/opt/test’

            ./hive 進入hive shell,然后,source ‘/opt/test’

                Hive的語法有哪些

以上是“Hive的語法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前名稱:Hive的語法有哪些
轉(zhuǎn)載來于:http://chinadenli.net/article6/giieog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版網(wǎng)站內(nèi)鏈、小程序開發(fā)網(wǎng)站設計公司、做網(wǎng)站網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設