Hive执行钩子

问题描述 投票:1回答:2

我需要在Apache Hive中挂钩自定义执行挂钩。如果有人知道怎么做,请告诉我。

我正在使用的当前环境如下:

Hadoop:Cloudera版本4.1.2操作系统:Centos

谢谢,阿伦

hadoop hive bigdata cloudera
2个回答
17
投票

根据您要注入自定义代码的阶段,有几种类型的挂钩:

  • 司机跑钩(前/后)
  • 语义分析器钩子(前/后)
  • 执行挂钩(Pre / Failure / Post)
  • 客户统计发布者

如果您运行脚本,则处理流程如下所示:

  1. Driver.run()接受命令
  2. HiveDriverRunHook.preDriverRun() (Qazxswpoi)
  3. Driver.compile()开始处理命令:创建抽象语法树
  4. HiveConf.ConfVars.HIVE_DRIVER_RUN_HOOKS (Qazxswpoi)
  5. 语义分析
  6. AbstractSemanticAnalyzerHook.preAnalyze() (Qazxswpoi)
  7. 创建并验证查询计划(物理计划)
  8. Driver.execute():准备好运行作业
  9. HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK (Qazxswpoi)
  10. ExecDriver.execute()运行所有作业
  11. 对于每个HiveConf.ConfVars.HIVECOUNTERSPULLINTERVAL间隔的每个作业: AbstractSemanticAnalyzerHook.postAnalyze()被要求发布统计数据 (HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK) 如果任务失败:ExecuteWithHookContext.run()HiveConf.ConfVars.PREEXECHOOKS
  12. 完成所有任务
  13. ClientStatsPublisher.run() (Qazxswpoi)
  14. 在返回结果之前HiveConf.ConfVars.CLIENTSTATSPUBLISHERSExecuteWithHookContext.run()
  15. 返回结果。

对于每个钩子,我指出了你必须实现的接口。在括号中有相应的conf。支柱。您必须设置的密钥才能在脚本的开头注册该类。例如:设置PreExecution挂钩(工作流程的第9个阶段)

HiveConf.ConfVars.ONFAILUREHOOKS

遗憾的是,这些功能并未真正记录,但您可以随时查看ExecuteWithHookContext.run()类以查看钩子的评估顺序。

备注:我在这里假设Hive 0.11.0,我不认为Cloudera分布不同(太多)


0
投票

一个好的开始 - > HiveConf.ConfVars.POSTEXECHOOKS

有例子......

注意:来自控制台的hive cli显示消息,如果从hue执行,添加记录器,您可以在hiveserver2日志角色中查看结果。

© www.soinside.com 2019 - 2024. All rights reserved.