进入spark路径下的bin目录,执行./spark-shell
报错:
./spark-shell
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
原因:spark(/data/cloudera/parcels/SPARK2/lib/spark2/jars)下的jars目录下缺乏slf4j,log4j的包
解决方式:添加jars包到该路径下
我这里的slf4j-log4j12 是1.7.21,大家也可以参考我的或者上https://mvnrepository.com/ 找自己的版本的jar包
1、搜索上slf4j 找到Binding的版本,点击进去找对应的版本,下载jar包
2、下拉找到对应的log4j 和slf4j-api的版本,后面的updates是最新版大家可以不用管
然后下载两个jar下来
3、将三个jars上传到spark的jars目录下问题就解决了