问题描述
在运行Hadoop项目的控制台时候出现了log4f的警告,然后有时候项目莫名出错却不知道在哪里。上图: 错误样式解决方案
既然是log4j的问题,那我们配置一个log4j的文件就好了,我们在项目的src文件夹中新建一个file文件:
命名为:log4j.properties,然后写入以下内容:
###配置根Logger###
log4j.rootLogger=info, stdout
###配置日志输出目的地Appender###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
###配置输出格式###
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
###配置package输出级别###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
我也不知道啥意思,但是能用。
最终图
然后就好了,你再去运行你的项目就会发现没有这个警告了,然后还有Hadoop的运行日志,就可以很方便的找到错误所在然后对症下药了。
番外
今天在运行的时候出现了这个错误:
java.lang.Exception: java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.FileSplit cannot be cast to org.apache.hadoop.mapred.FileSplit
at org.apache.hadoop.mapred.LocalJobRunner
最后查资料发现是导包出错了,改一下就好:
#错误的
import org.apache.hadoop.mapred.FileSplit;
# 正确的
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
网友评论