设为首页 收藏本站
查看: 1375|回复: 0

[经验分享] hive源码阅读02-org.apache.hadoop.hive.ql.stats概述

[复制链接]

尚未签到

发表于 2018-10-30 10:06:37 | 显示全部楼层 |阅读模式
  org.apache.hadoop.hive.ql.stats包含的类与接口如下图所示:
DSC0000.jpg

  其中:
  接口:
  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.


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-628331-1-1.html 上篇帖子: hadoop入门之namenode工作特点介绍 下篇帖子: Hadoop源代码分析(包mapreduce.lib.input)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表