本文主要是介绍关于Hive重写LineageLogger获取血缘问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Lineagelogger类是hive2.x加入的,但是我们如果自己改造的话需要注意如下问题:(如果将代码迁移到1.x应该直接可用 1.x代码中是直接做了add的操作,并没有做判断才进行加入)
org.apache.hadoop.hive.ql.optimizer.Optimizer 类 第79行 这里由于只有如下几种类型才会加入 generator ,后续才能正常注入字段级血缘,所以
如果这里没有改 直接配置了 hive.exec.post.hooks 类型的hook , 只能拿到基本的input 与output
if (postExecHooks.contains("org.apache.hadoop.hive.ql.hooks.PostExecutePrinter")|| postExecHooks.contains("org.apache.hadoop.hive.ql.hooks.LineageLogger")|| postExecHooks.contains("org.apache.atlas.hive.hook.HiveHook")) {transformations.add(new Generator());
}
另外一种使用自己修改的HOOk的实现方式是 在配置文件中或者同时设置
set hive.exec.post.hook=hive自带LineageLogger.class,自己所实现的类
这篇关于关于Hive重写LineageLogger获取血缘问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!