狠狠躁日日躁夜夜躁A片无码,中文字幕在线亚洲二区,最近更新中文字幕在线,四虎影视国产精品亚洲精品,男人扒开添女人下部免费视频

訂閱
糾錯
加入自媒體

一文詳解Hive知識體系

2021-08-19 14:54
園陌
關注

三、Hive數據抽樣

當數據規(guī)模不斷膨脹時,我們需要找到一個數據的子集來加快數據分析效率。因此我們就需要通過篩選和分析數據集為了進行模式 & 趨勢識別。目前來說有三種方式來進行抽樣:隨機抽樣,桶表抽樣,和塊抽樣。

3.1 隨機抽樣

關鍵詞:rand()函數

使用rand()函數進行隨機抽樣,limit關鍵字限制抽樣返回的數據,其中rand函數前的distribute和sort關鍵字可以保證數據在mapper和reducer階段是隨機分布的。

案例如下:

select * from table_name
where col=xxx
distribute by rand() sort by rand()
limit num;

使用order 關鍵詞:

案例如下:

select * from table_name
where col=xxx
order by rand()
limit num;

經測試對比,千萬級數據中進行隨機抽樣 order by方式耗時更長,大約多30秒左右。

3.2 塊抽樣

關鍵詞:tablesample()函數。

tablesample(n percent) 根據hive表數據的大小按比例抽取數據,并保存到新的hive表中。如:抽取原h(huán)ive表中10%的數據

注意:測試過程中發(fā)現,select語句不能帶where條件且不支持子查詢,可通過新建中間表或使用隨機抽樣解決。

select * from xxx tablesample(10 percent) 數字與percent之間要有空格
tablesample(nM) 指定抽樣數據的大小,單位為M。select * from xxx tablesample(20M) 數字與M之間不要有空格
tablesample(n rows) 指定抽樣數據的行數,其中n代表每個map任務均取n行數據,map數量可通過hive表的簡單查詢語句確認(關鍵詞:number of mappers: x)select * from xxx tablesample(100 rows) 數字與rows之間要有空格
3.3 桶表抽樣

關鍵詞:tablesample (bucket x out of y [on colname])

其中x是要抽樣的桶編號,桶編號從1開始,colname表示抽樣的列,y表示桶的數量。

hive中分桶其實就是根據某一個字段Hash取模,放入指定數據的桶中,比如將表table_1按照ID分成100個桶,其算法是hash(id) % 100,這樣,hash(id) % 100 = 0的數據被放到第一個桶中,hash(id) % 100 = 1的記錄被放到第二個桶中。創(chuàng)建分桶表的關鍵語句為:CLUSTER BY語句。

例如:將表隨機分成10組,抽取其中的第一個桶的數據:

select * from table_01
tablesample(bucket 1 out of 10 on rand())

四、Hive計算引擎

目前Hive支持MapReduce、Tez和Spark 三種計算引擎。

4.1 MR計算引擎

MR運行的完整過程:

Map在讀取數據時,先將數據拆分成若干數據,并讀取到Map方法中被處理。數據在輸出的時候,被分成若干分區(qū)并寫入內存緩存(buffer)中,內存緩存被數據填充到一定程度會溢出到磁盤并排序,當Map執(zhí)行完后會將一個機器上輸出的臨時文件進行歸并存入到HDFS中。

當Reduce啟動時,會啟動一個線程去讀取Map輸出的數據,并寫入到啟動Reduce機器的內存中,在數據溢出到磁盤時會對數據進行再次排序。當讀取數據完成后會將臨時文件進行合并,作為Reduce函數的數據源。

4.2 Tez計算引擎

Apache Tez是進行大規(guī)模數據處理且支持DAG作業(yè)的計算框架,它直接源于MapReduce框架,除了能夠支持MapReduce特性,還支持新的作業(yè)形式,并允許不同類型的作業(yè)能夠在一個集群中運行。

Tez將原有的Map和Reduce兩個操作簡化為一個概念——Vertex,并將原有的計算處理節(jié)點拆分成多個組成部分:Vertex Input、Vertex Output、Sorting、Shuffling和Merging。計算節(jié)點之間的數據通信被統(tǒng)稱為Edge,這些分解后的元操作可以任意靈活組合,產生新的操作,這些操作經過一些控制程序組裝后,可形成一個大的DAG作業(yè)。

通過允許Apache Hive運行復雜的DAG任務,Tez可以用來處理數據,之前需要多個MR jobs,現在一個Tez任務中。

Tez和MapReduce作業(yè)的比較:

Tez繞過了MapReduce很多不必要的中間的數據存儲和讀取的過程,直接在一個作業(yè)中表達了MapReduce需要多個作業(yè)共同協(xié)作才能完成的事情。

Tez和MapReduce一樣都運行使用YARN作為資源調度和管理。但與MapReduce on YARN不同,Tez on YARN并不是將作業(yè)提交到ResourceManager,而是提交到AMPoolServer的服務上,AMPoolServer存放著若干已經預先啟動ApplicationMaster的服務。

當用戶提交一個作業(yè)上來后,AMPoolServer從中選擇一個ApplicationMaster用于管理用戶提交上來的作業(yè),這樣既可以節(jié)省ResourceManager創(chuàng)建ApplicationMaster的時間,而又能夠重用每個ApplicationMaster的資源,節(jié)省了資源釋放和創(chuàng)建時間。

Tez相比于MapReduce有幾點重大改進:

當查詢需要有多個reduce邏輯時,Hive的MapReduce引擎會將計劃分解,每個Redcue提交一個MR作業(yè)。這個鏈中的所有MR作業(yè)都需要逐個調度,每個作業(yè)都必須從HDFS中重新讀取上一個作業(yè)的輸出并重新洗牌。而在Tez中,幾個reduce接收器可以直接連接,數據可以流水線傳輸,而不需要臨時HDFS文件,這種模式稱為MRR(Map-reduce-reduce*)。

Tez還允許一次發(fā)送整個查詢計劃,實現應用程序動態(tài)規(guī)劃,從而使框架能夠更智能地分配資源,并通過各個階段流水線傳輸數據。對于更復雜的查詢來說,這是一個巨大的改進,因為它消除了IO/sync障礙和各個階段之間的調度開銷。

在MapReduce計算引擎中,無論數據大小,在洗牌階段都以相同的方式執(zhí)行,將數據序列化到磁盤,再由下游的程序去拉取,并反序列化。Tez可以允許小數據集完全在內存中處理,而MapReduce中沒有這樣的優(yōu)化。倉庫查詢經常需要在處理完大量的數據后對小型數據集進行排序或聚合,Tez的優(yōu)化也能極大地提升效率。

4.3 Spark計算引擎

Apache Spark是專為大規(guī)模數據處理而設計的快速、通用支持DAG(有向無環(huán)圖)作業(yè)的計算引擎,類似于Hadoop MapReduce的通用并行框架,可用來構建大型的、低延遲的數據分析應用程序。

Spark是用于大規(guī)模數據處理的統(tǒng)一分析引擎,基于內存計算,提高了在大數據環(huán)境下數據處理的實時性,同時保證了高容錯性高可伸縮性,允許用戶將Spark部署在大量硬件之上,形成集群。

Spark運行流程

Spark運行流程

Spark具有以下幾個特性。

1.高效性

Spark會將作業(yè)構成一個DAG,優(yōu)化了大型作業(yè)一些重復且浪費資源的操作,對查詢進行了優(yōu)化,重新編寫了物理執(zhí)行引擎,如可以實現MRR模式。

2.易用性

Spark不同于MapReducer只提供兩種簡單的編程接口,它提供了多種編程接口去操作數據,這些操作接口如果使用MapReduce去實現,需要更多的代碼。Spark的操作接口可以分為兩類:transformation(轉換)和action(執(zhí)行)。Transformation包含map、flatmap、distinct、reduceByKey和join等轉換操作;Action包含reduce、collect、count和first等操作。

3.通用性

Spark針對實時計算、批處理、交互式查詢,提供了統(tǒng)一的解決方案。但在批處理方面相比于MapReduce處理同樣的數據,Spark所要求的硬件設施更高,MapReduce在相同的設備下所能處理的數據量會比Spark多。所以在實際工作中,Spark在批處理方面只能算是MapReduce的一種補充。

4.兼容性

Spark和MapReduce一樣有豐富的產品生態(tài)做支撐。例如Spark可以使用YARN作為資源管理器,Spark也可以處理Hbase和HDFS上的數據。

<上一頁  1  2  3  4  5  6  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號