标签:blank target border style title
org.apache.hadoop.hive.ql.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.
hive源码阅读02-org.apache.hadoop.hive.ql.stats概述
标签:blank target border style title
原文地址:http://supermagi.blog.51cto.com/10191319/1653764