Hive實際應用小結

1.簡介算法

Hive是數據倉庫平臺,構建在Hadoop之上用來處理結構化數據。Hive是一個SQL解析引擎,可以將SQL語句轉化成MapReduce做業並在Hadoop上執行,從而使得查詢和分析更加方便。
Hive是Facebook開發。2008年貢獻給Apache,成爲開源項目。shell

 

2.應用併發

由上圖可見,hive的誕生能夠很下降開發人員運用mapreduce計算框架的門檻,經過熟悉的SQL語句來實現複雜的mapreduce代碼的編寫,從而下降開發難度提升開發效率。框架

Hive適用於海量結構化數據的離線分析,若是有需求是是須要統計計算大數據量並且對於時效性沒有太高要求的狀況下,建議採用Hive來作處理。不適用於複雜的機器學習算法,由於機器學習算法大多涉及大量的迭代計算,而hive默認狀況下底層封裝的計算框架是MapReduce,計算效率比較低下不適合複雜的計算,(Hive on Spark另議),由於底層的計算框架是mapreduce 因此也不適合交互式實時查詢,有交互式實時查詢建議使用Impala。機器學習

3.使用方法及技巧函數

1)使用hive -e 將SQL寫入shell腳本進行調用,如進行一些數據的定時彙總。使用定時器進行shell腳本的調用,可使用oozie或者crontab調用hive腳本oop

2)當多個SQL併發執行佔用資源過多時,能夠經過設置HiveQL語句的優先級來告訴yarn優先給那個MapReduce分配資源(HiveQL底層轉化成MapReduce執行),使用語句 SET mapreduce.job.priority=HIGH;設定任務的優先級是高,總共有四個級別,此處再也不贅述。學習

3)HiveQL書寫時遇到Join語句,當儘可能遵循先過濾後Join大數據

4)避免使用in ,not in語句blog

5)當多表join時。應當選擇合適的表做爲主表。

4.建議使用方式

在項目作技術選型時,若是有大量結構化數據進行離線計算,能夠採用Hive來作計算,緣由以下:

1)既然是離線分析,就不會太在意時效性,因此沒必要使用SparkSQL,impala這種消耗內存來更快計算的技術,當有需求是須要短期內返回計算結果的,hive不適用。

2)對於結構化數據處理使用SQL代替繁瑣的mapreduce代碼省時省力。

3)支持udf,udaf,udtf。對於複雜邏輯能夠寫Java代碼實現做爲自定義函數去調用

我的在使用hive仍存在問題但願各位可以給予解答將不勝感激:

  在使用hive與hbase表創建映射關係時,能夠實現hive分區嗎?如何實現?

相關文章
相關標籤/搜索