posir 发表于 2018-10-30 10:06:37

hive源码阅读02-org.apache.hadoop.hive.ql.stats概述

  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,用于区分statspublisher / aggregator,是否每个task都跟踪stats.

页: [1]
查看完整版本: hive源码阅读02-org.apache.hadoop.hive.ql.stats概述