這篇文章給大家分享的是有關如何讓Hive運行更快的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司于2013年成立,先為詔安等服務建站,詔安等地企業(yè),進行企業(yè)商務咨詢服務。為詔安企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
Hive并不是一個關系型數(shù)據(jù)庫,但它假裝是大部分情況中的一個。它有表格,運行SQL,并且支持JDBC和ODBC。
這個啟示有利及不利的消息:Hive不運行查詢數(shù)據(jù)庫方式。這是一個很長的故事,但是我在工作周花了80多個小時親自調(diào)整Hive。不用說,我不必再頭疼了。因此,為了您的利益,這里有一些建議,讓你的Hive項目比我的運行的快一點。
1、不要使用MapReduce
你是否相信Tez,Spark或者Impala,但是不相信MapReduce。它是緩慢的,它比Hive還要慢。如果你在Hortonwork的分布,你可以在腳本的頂部輸入 set hive.execution.engine=tez
在子句中使用Impala.希望當你的impala不再合適的時候設置 hive.execution.engine=spark
2、不要在SQL字符串配對
注意,尤其是在Hive,如果你在本該是子句的地方配對字符串,會產(chǎn)生一個交叉的產(chǎn)品警告。如果你有一個幾秒內(nèi)運行的查詢,與需要幾分鐘才能配對的字符串。你***選擇使用多個工具,允許你添加搜索Hadoop。查看Elasticsearch’s Hiveintegration or Lucidwork’s integration for Solr?;蛘撸睦镉蠧loudera Search. RDBMSes 非常善于做這個,但是Hive就很差了。
3、不要加入一個子查詢
你***創(chuàng)建一個臨時列表,然后加入臨時表不詢問Hive如何智能的處理子查詢。也就是說不要這么做。
而是要這么樣做
在這一點上,它真的不應該在Hive的進化上如此之快,但是它通常是這樣的。
4、使用Parquet或者ORC,但是不要把它們轉(zhuǎn)化成運動
這就是說,相對用Parquet或者ORC,例如,TEXTFILE。然而,如果你有文本數(shù)據(jù)進來,并且促進它變的更結(jié)構化,轉(zhuǎn)換到目標表。你不能從文本文件加載數(shù)據(jù)到一個ORC,所以做初始加載到文本。
如果你創(chuàng)建其他的表,你最終會運行不到你的分析。在那里做ORCing,因為轉(zhuǎn)換到ORC或者Parquet需要時間,并且不值得進行你的ETL過程的***步。如果你有簡單的平面文件進來,并且不做任何調(diào)整。然后你被加載到一個臨時表,并且選擇創(chuàng)建一個ORC或者Parquet。我不嫉妒你因為它真的很慢。
5、嘗試把矢量化打開或者關閉
增加
在你的腳本的頂端。嘗試讓它們開或關,因為矢量化在Hive的新版本中似乎有一些問題。
6、不要用結(jié)構加入
我不得不承認我原本的大腦的SQL語法依然是SQL-92時代,所以我無論如何不傾向于使用結(jié)構。但是如果你做一些像對復合PKS子句超重復的事情,結(jié)構是方便的。不幸的是,Hive隔斷了它們——尤其是在子句上,當然,在較小的數(shù)據(jù)集并沒有這么做,也沒有產(chǎn)生任何錯誤的時間。在絕對禁區(qū),你得到一個有趣的向量誤差。這個限制是沒有記錄任何我所知道的地方。把這個看成是一個有序的方式來了解你的執(zhí)行引擎的內(nèi)部結(jié)構!
7、檢查容器的尺寸
你可能需要為Impala或者Tez增加你容器的尺寸。此外,”建議”尺寸可能不適用于您的系統(tǒng),如果你有較大的節(jié)點尺寸。你可能要確保你的YARN隊列和一般的YARN記憶是恰當?shù)?。你可能還想把它釘在一個東西上,這個東西不是所有人都使用的默認隊列。
8、啟動統(tǒng)計
Hive的確有點愚蠢的東西加入,除非數(shù)據(jù)啟動起來。你可能還想在Impala使用查詢提示。
9、考慮Mapjoin優(yōu)化
如果你對查詢做了解釋,你可能會發(fā)現(xiàn)最近Hive的版本足夠聰明到去自動應用優(yōu)化的。但是你需要去調(diào)整他們。
10、如果可以,把***的表放在***
11、區(qū)分你的朋友……額……
如果你在許多子句的地方有一個項目,如一個日期(但是并不是一個理想的范圍)或者重復的位置,您可能有您的區(qū)分鍵!分區(qū)的基本意思是”分裂成為它自己的目錄,”這意味著不是在尋找一個大的文件,Hive查看一個文件,因為你用你的join/where從句讓你只看location=’NC’,這是你的一個小數(shù)據(jù)集。此外,與列值不同,您可以在負載數(shù)據(jù)報表中推分區(qū)。但是,請記住,HDFS不喜歡小的文檔。
12、使用哈希表列的比較
如果你在每個查詢中比較相同的10個字段,考慮使用()對比總結(jié)。這些有時是非常有用的,你可能會把它們放在一個輸出表中。注意Hive0.12是低分辨率的,但是更好的可以使用的值在0.13。
感謝各位的閱讀!關于“如何讓Hive運行更快”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!