我正在启动spark-shell(spark 2.2)并在spark-shell命令中添加了一堆jar(来自Ignite 2.1目录)。
仍然收到错误:
Can't load log handler "org.apache.ignite.logger.java.JavaLoggerFileHandler"
同时遵循此处的建议:
https://apacheignite.readme.io/v1.2/docs/installation--deployment
# Optionally set IGNITE_HOME here.
# IGNITE_HOME=/path/to/ignite
IGNITE_LIBS="${IGNITE_HOME}/libs/*"
for file in ${IGNITE_HOME}/libs/*
do
if [ -d ${file} ] && [ "${file}" != "${IGNITE_HOME}"/libs/optional ]; then
IGNITE_LIBS=${IGNITE_LIBS}:${file}/*
fi
done
export SPARK_CLASSPATH=$IGNITE_LIBS
同样将日志记录设置为仅ERROR,但仍然出现错误:
Can't load log handler "org.apache.ignite.logger.java.JavaLoggerFileHandler"
java.lang.ClassNotFoundException: org.apache.ignite.logger.java.JavaLoggerFileHandler
java.lang.ClassNotFoundException: org.apache.ignite.logger.java.JavaLoggerFileHandler
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.util.logging.LogManager$5.run(LogManager.java:965)
at java.security.AccessController.doPrivileged(Native Method)
答案 0 :(得分:0)
在使用Ignite 2.1时,您似乎使用旧版Ignite 1.2的文档。请在此处查看文档以获取最新版本:https://apacheignite-fs.readme.io/v2.2/docs/installation-deployment
另外,请确保在您的环境中配置了IGNITE_HOME。放置在ignite-core模块中的JavaLoggerFileHandler看起来像spark classpath根本看不到任何Ignite lib。
答案 1 :(得分:0)
文档描述了这里的问题:
https://apacheignite-fs.readme.io/v2.2/docs/troubleshooting
如果类路径中没有任何记录器,并且Ignite尝试使用标准Java日志记录,则会出现此问题。默认情况下,Spark使用单独的类加载器加载所有用户jar文件。另一方面,Java日志记录框架使用应用程序类加载器来初始化日志处理程序。要解决此问题,您可以将ignite-log4j模块添加到使用的jar列表中,以便Ignite将Log4j用作日志记录子系统,或者更改默认的Spark类路径