中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

hive是什么意思

發布時間:2021-12-10 10:12:13 來源:億速云 閱讀:185 作者:小新 欄目:云計算

這篇文章主要介紹hive是什么意思,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    hive是hadoop整個項目使用中最常用的輔助項目之一。

    hadoop基礎的組件有hdfs和mapreduce。hdfs完成整個hadoop集群中數據的存儲,采用google的bigTable架構,其實我覺得就是將數據平分為多份,然后平分給分布式中的各機器上,存儲在上面的數據就像一個隱藏文件,你在本地硬盤上找不到它們,但卻可以通過hadoop中hdfs指令顯示和操作它們,像hadoop dfs -ls 路徑。而mapreduce則是將存儲在集群中的數據進行分布式計算,由原來1臺電腦的工作放到集群中所有電腦上,因此它的運算效率會有顯著的提高。

    說完了hdfs和mapreduce,你應該對hadoop有個基本的了解了,咱們再說下hive。

    hive是通過解析你所寫的HiveQL語句,來進行mapreduce計算,實現數據倉庫中分析數據的作用。hive其實就是針對mapreduce寫了一系列的方法和類,咱們可以通過寫HIVEQL的形式執行mapreduce.用hiveQL能實現的功能你都能在mapReduce中寫出來,如果你不閑麻煩的話。。。

    說下hive的主要功能:數據ETL(抽取、轉換、加載)工具、數據存儲和大型數據集的查詢和分析能力。

    hive包含了四種數據模型:表(Table)、外部表(External Table)、分區(Partition)、桶(bucket)。

    表和外部表個人感覺用起來沒什么區別, 有區別的地方只不過是外部表在創建的時候數據沒有移動到數據倉庫目錄中,也就是說外部表不是由它自己來管理。而刪除外部表的時候,只會刪除元數據,外部表內的數據不會被刪除。

    而分區和桶。。。就用分區。。不過分區和桶應該都是為了優化hive的分析效率而做的架構,我原來放10號到20號的數據都放個一個文件中,現在,我通過分區,將10號到20號的每日數據存儲在以天為單位的存儲文件中,這樣,我查詢某一天的數據時只是查詢這一天的文件,而不是查詢未分區前的整個文件,這樣,效率就上來了,當然,這只是我的理解,可能還有其它作用。。。

    我理解的hive的基本工作是:將metadata存到hive自建的表中,然后通過操作和分析hive表中的數據,得到你想要的分析結果。

    hive的元數據存儲有三種方式:

    一、Single User Mode.其實就是將metadata存儲在一個內存數據庫(derby)中。內存才多大啊,所以日常中基本不用。

    二、Multi User Mode. 通過是連接本機的MySql,來獲取元數據。這是日常和工作中最常用的一種方式。。貌似是工作中。。

    三、Remote Server Mode .其實就是通過本機的thrift協議訪問另一個服務器上的metaStoreServcer,metadata不在本地。

    關于hive配置,不多說了,網上一堆。。。

   關于hive中表的操作,我說下容易讓人誤會的地方:

    hive雖然有表的概念,但它是一個離線數據分析工具,建表只是為了分析服務的,而分析的數據你不可能一條一條插入進去,或者刪幾條。。而它的正常使用方式是將metadata導入到hive表中,再通過hiveQL分析hive表中的數據。所以hive中不提供手動插入一條或幾條數據。有手動就得有自動,自動我舉個例子:insert overwrite table abc select * from bbc;這就是我認為的自動。。。。不能手動增加數據了,只能導入數據或自動添加數據。那么刪除和修改呢,妥妥的也不能。

    關于hive語句的介紹也不多說了,網上也一堆,說的都挺清楚明白的。不過,這里我還得舉個例子,關于我今天寫的一個,煩了我一天的mapjoin...

     mapjoin 有兩個好處:1.關聯的兩張表中有一個表非常小時,mapjoin可以將小表中的數據加載到內存中,然后在map階段會自動大表中的數據,效率還不錯。like :select /*+ mapjoin*/ a.id,a,username from a join b on (a.id=b.id)。這是在對等的情況下,效率相當不錯。

                          2.還有一個好處就是它可以實現不對等連接。。 join ..on  ()  ,on 后面會跟對等的條件,像a.id=b.id ,你如果跟個like 會報錯。而mapjoin可以實現不對等條件,就是在join后面不用on了,直接用where,不過這個效率,試了下,個人感覺效率不高。。like :select /*+ mapjoin*/ a.id,a,username from a join b where a.username like 'error')。

            關于hive其它的方面我還沒有看。。等以后看完了,再談下感受吧。。

    PS: 關于mapjoin()的非等值測試:

    兩張表:pv_temp_test1(大表)  ,title_keyword_test(小表)

             pv_temp_test1:  530180 條 

             title_keyword_test  5646 條

  測試語句 :

hive> insert overwrite table hbase_test_keyword 
select /*+ mapjoin(a)*/ a.keyword,b.dt,b.pid,b.area,count(*),count(distinct clientid) from title_keyword_test a join (select dt,pid,area,wd,clientid from pv_temp_test1 where wd!='' and wd != 'None') b where b.wd like concat('%',a.keyword,'%') group by  a.keyword,b.dt,b.area,b.pid;

   花費時間:4927秒......

以上是“hive是什么意思”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉树县| 旬邑县| 舟曲县| 佛山市| 垫江县| 镇坪县| 上林县| 鹤壁市| 搜索| 合作市| 荣成市| 屯门区| 茂名市| 连山| 开封市| 彩票| 都兰县| 康平县| 耒阳市| 观塘区| 扬中市| 贡嘎县| 布拖县| 商洛市| 阿拉尔市| 行唐县| 三江| 新乐市| 嘉黎县| 云龙县| 永顺县| 信丰县| 塘沽区| 纳雍县| 苍山县| 太谷县| 博白县| 金平| 英山县| 景东| 灵璧县|