尝试了一下log4j但是没有效果,也可能我用的不对,现在无论是直接用Java的控制台输出或者是apache.common下的日志类都拿不到日志,有点头大
3条回答 默认 最新
阿里嘎多学长 2025-10-28 17:38关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
解决方案
你遇到的问题是Hive自定义函数中无法输出日志并出现在YARN聚合结果中。这里有几点需要注意:
- Hive自定义函数的日志级别:Hive自定义函数的日志级别默认是INFO,需要在函数中设置日志级别为DEBUG或TRACE,才能看到日志。
- YARN日志收集:YARN会收集应用的日志,但是需要配置日志收集器才能看到日志。
- Hive自定义函数的日志输出:Hive自定义函数的日志输出需要通过
System.out.println()或Logger类来实现。
解决方法
- 在Hive自定义函数中设置日志级别为DEBUG或TRACE:
import org.apache.log4j.Logger; public class MyUDF { private static final Logger LOG = Logger.getLogger(MyUDF.class); public String evaluate(String input) { LOG.setLevel(Level.DEBUG); // ... } }- 配置YARN日志收集器:
yarn logs -applicationId <应用ID>- 在Hive自定义函数中输出日志:
public String evaluate(String input) { System.out.println("日志信息:" + input); // ... }或者使用
Logger类:public String evaluate(String input) { LOG.debug("日志信息:" + input); // ... }注意
- 需要在Hive自定义函数中设置日志级别和输出日志。
- 需要配置YARN日志收集器才能看到日志。
- 日志输出需要通过
System.out.println()或Logger类来实现。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报