hive源碼閱讀02-org.apache.hadoop.hive.ql.stats概述

 

org.apache.hadoop.hive.ql.stats包含的類與接口如下圖所示:

stats

其中:

接口:

ClientStatsPublisher :

包含run方法,在hive中並沒有其他類實現該方法,這個主要用於hive stats擴展使用。具體實現需要由

hive.client.stats.publishers這個參數決定,這個參數是用逗號隔開的stats publisher,這些stats publisher被每一個job調用。

該參數默認爲空。其中client stats publisher是實現ClientStatsPublisher 該接口的java類的名稱。

StatsPublisher:

發佈stats的接口,聲明瞭init,connect,publishStat,closeConnection等方法,需要發佈stats的類都需要實現該接口。

init方法:

這個方法需要一次初始化,可能創建數據庫和表(如果不存在)。爲了達到僅初始化一次的目的,這個方法需要在hive client端調用,而不是mapper/reducer調用。

參數:hconf HiveConf : 包含用於連接中間stats數據庫的配置參數信息。

返回值:如果初始化成功,返回true,否則返回false

connect方法:

連接到中間stats數據庫。

參數:hconf HiveConf : 包含用於連接中間stats數據庫的配置參數信息。

返回值:如果連接成功,返回true,否則返回false

publishStat方法:

這個方法發佈一個給定的統計信息到一個磁盤存儲,可能是hbase或者Mysql

參數:fileID :一個字符串標識,統計信息被所有的mapper/reducer發佈然後被收集,這個ID對於每個task每個輸出的partition是唯一的。

                         如:輸出目錄名稱(每個FileSinkOperator唯一)+分區規格(僅用於動態分區)+taskID(task文件的最後部分)

stats:一個鍵值對集合,key是發佈統計信息的名稱,value是給定統計信息的值。

返回值: 如果成功返回true,否則返回false

 

closeConnection方法:

關閉臨時存儲連接。

StatsAggregator:

收集Stats的接口。

connect方法:

連接到中間stats數據庫。

參數:hconf HiveConf : 包含用於連接中間stats數據庫的配置參數信息。

            sourceTask

返回值:如果連接成功,返回true,否則返回false

aggregateStats方法:

這個方法從所用的task中聚集給定的統計信息,聚集完後,這個方法會自動的將所用記錄清除。

keyPrefix:key的前綴用於StatsPublisher進行發佈stats,例如,如果StatsPublisher用一下合成key值發佈stats:

輸出目錄名稱(每個FileSinkOperator唯一)+分區規格(僅用於動態分區)+taskID(task文件的最後部分)

那麼keyPrefix將會是開頭的前兩個組件合成。

statType:一個被髮布的字符串,不是key值,例如:numRows

返回值:一個long值,轉化爲String類型,如果有任何異常或錯誤,將會返回null

 

closeConnection方法:

關閉臨時存儲連接。

 

cleanUp方法:

在stats被收集之後調用該方法;一旦我們支持多個統計信息,我們將不會執行在收集後自動執行cleanUp。

這個方法調用後,closeConnection必須調用。

這個方法同樣可以用於清除統計信息,儘管信息沒有被收集。通常發生於,job失敗或者強制停止發佈一些統計信息。

keyPrefix:key的前綴用於StatsPublisher進行發佈stats。

返回值:cleanup成功返回true,否則false

 

StatsCollectionTaskIndependent:

這個是一個maker interface,用於區分stats  publisher / aggregator,是否每個task都跟蹤stats.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章