hive执行钩子

rta7y2nd  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(551)

我需要在apachehive中钩住一个定制的执行钩子。如果有人知道怎么做,请告诉我。
我目前使用的环境如下:
hadoop:cloudera版本4.1.2操作系统:centos
谢谢,阿伦

fslejnso

fslejnso1#

好的开始-->http://dharmeshkakadia.github.io/hive-hook/
有一些例子。。。
注意:来自控制台的hivecli显示消息如果您从hue执行,添加一个记录器,您可以在hiveserver2 log role中看到结果。

a14dhokn

a14dhokn2#

根据要在哪个阶段注入自定义代码,有几种类型的钩子:
驾驶员运行挂钩(前/后)
语义分析器挂钩(前/后)
执行挂钩(前/失败/后)
客户端统计发布程序
如果运行脚本,处理流程如下所示:
driver.run()接受命令 HiveDriverRunHook.preDriverRun() ( HiveConf.ConfVars.HIVE_DRIVER_RUN_HOOKS )
compile()开始处理命令:创建抽象语法树 AbstractSemanticAnalyzerHook.preAnalyze() ( HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK )
语义分析 AbstractSemanticAnalyzerHook.postAnalyze() ( HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK )
创建并验证查询计划(物理计划)
driver.execute():准备运行作业 ExecuteWithHookContext.run() ( HiveConf.ConfVars.PREEXECHOOKS )
execdriver.execute()运行所有作业
对于每个hiveconf.confvars.hivecounterspullinterval间隔的每个作业: ClientStatsPublisher.run() 调用以发布统计信息
( HiveConf.ConfVars.CLIENTSTATSPUBLISHERS )
如果任务失败: ExecuteWithHookContext.run() ( HiveConf.ConfVars.ONFAILUREHOOKS )
完成所有任务 ExecuteWithHookContext.run() ( HiveConf.ConfVars.POSTEXECHOOKS )
在返回结果之前 HiveDriverRunHook.postDriverRun() ( HiveConf.ConfVars.HIVE_DRIVER_RUN_HOOKS )
返回结果。
对于每个钩子,我都指出了必须实现的接口。括号中有相应的conf.prop。为了在脚本的开头注册类,必须设置密钥。e、 g:设置预执行挂钩(工作流的第9阶段)

HiveConf.ConfVars.PREEXECHOOKS -> hive.exec.pre.hooks :
set hive.exec.pre.hooks=com.example.MyPreHook;

不幸的是,这些特性并没有真正的文档化,但是您可以随时查看驱动程序类来查看钩子的求值顺序。
备注:我在这里假设了hive0.11.0,我不认为cloudera的分布有什么不同(太多)

相关问题