【发布时间】:2025-12-05 23:10:02
【问题描述】:
我需要在 Apache Hive 中挂钩自定义执行挂钩。如果有人知道该怎么做,请告诉我。
我目前使用的环境如下:
Hadoop:Cloudera 版本 4.1.2 操作系统:Centos
谢谢, 阿伦
【问题讨论】:
标签: hadoop hive bigdata cloudera
我需要在 Apache Hive 中挂钩自定义执行挂钩。如果有人知道该怎么做,请告诉我。
我目前使用的环境如下:
Hadoop:Cloudera 版本 4.1.2 操作系统:Centos
谢谢, 阿伦
【问题讨论】:
标签: hadoop hive bigdata cloudera
根据您要在哪个阶段注入自定义代码,有几种类型的钩子:
如果您运行脚本,处理流程如下所示:
HiveDriverRunHook.preDriverRun()HiveConf.ConfVars.HIVE_DRIVER_RUN_HOOKS)AbstractSemanticAnalyzerHook.preAnalyze() HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK)AbstractSemanticAnalyzerHook.postAnalyze() HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK)ExecuteWithHookContext.run() HiveConf.ConfVars.PREEXECHOOKS)ClientStatsPublisher.run() 来发布统计信息HiveConf.ConfVars.CLIENTSTATSPUBLISHERS)ExecuteWithHookContext.run() HiveConf.ConfVars.ONFAILUREHOOKS)ExecuteWithHookContext.run() HiveConf.ConfVars.POSTEXECHOOKS)HiveDriverRunHook.postDriverRun()HiveConf.ConfVars.HIVE_DRIVER_RUN_HOOKS)对于每个钩子,我都指出了您必须实现的接口。在括号中 有相应的conf。支柱。您必须设置的密钥才能注册 类在脚本的开头。 例如:设置 PreExecution 挂钩(工作流程的第 9 阶段)
HiveConf.ConfVars.PREEXECHOOKS -> hive.exec.pre.hooks :
set hive.exec.pre.hooks=com.example.MyPreHook;
很遗憾,这些功能并未真正记录在案,但您始终可以查看 Driver 类以查看挂钩的评估顺序。
备注:我在这里假设 Hive 0.11.0,我不认为 Cloudera 发行版 不同(太多)
【讨论】:
一个好的开始 --> http://dharmeshkakadia.github.io/hive-hook/
有例子……
注意:如果您从 hue 执行,来自控制台的 hive cli 会显示消息,添加一个记录器,您可以在 hiveserver2 日志角色中看到结果。
【讨论】: