我需要在Apache Hive中挂钩自定义执行挂钩。如果有人知道怎么做,请告诉我。
我正在使用的当前环境如下:
Hadoop:Cloudera 4.1.2版 操作系统:Centos
谢谢, 阿伦
答案 0 :(得分:18)
根据您想要注入自定义代码的阶段,有几种类型的钩子:
如果您运行脚本,处理流程如下所示:
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分布 不同(太多)答案 1 :(得分:0)
一个好的开始-> http://dharmeshkakadia.github.io/hive-hook/
有例子...
注意:如果您从hue执行,添加记录器,则控制台中的hive cli将显示消息。您可以在hiveserver2日志角色中查看结果。