gpt4 book ai didi

apache-spark - Spark worker 上缺少 SLF4J 记录器

转载 作者:行者123 更新时间:2023-12-05 00:30:26 25 4
gpt4 key购买 nike

我正在尝试通过 spark-submit 运行工作.

此作业导致的错误是:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
at java.lang.Class.getMethod0(Class.java:2866)
at java.lang.Class.getMethod(Class.java:1676)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more

不确定这是否重要,但我正在尝试在 Mesos 上的 Docker 容器中运行此作业。 Spark 是 1.61,Mesos 是 0.27.1,Python 是 3.5,Docker 是 1.11.2。我在客户端模式下运行。

这是我的 spark-submit 的要点陈述:
export SPARK_PRINT_LAUNCH_COMMAND=true
./spark-submit \
--master mesos://mesos-blahblahblah:port \
--conf spark.mesos.executor.docker.image=docker-registry:spark-docker-image \
--conf spark.mesos.executor.home=/usr/local/spark \
--conf spark.executorEnv.MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.dylib \
--conf spark.shuffle.service.enabled=true \
--jars ~/spark/lib/slf4j-simple-1.7.21.jar \
test.py
test.py的要点是它从 parquet 加载数据,按特定列对其进行排序,然后将其写回 parquet。

我添加了 --jars当我不断收到该错误时(该错误没有出现在我的驱动程序中 - 我浏览 Mesos 框架以查看每个 Mesos 任务的 stderr 以找到它)

我也尝试添加 --conf spark.executor.extraClassPath=http:some.ip:port/jars/slf4j-simple-1.7.21.jar ,

因为我在运行 spark-submit 时注意到了从上面它会输出
INFO SparkContext: Added JAR file:~/spark/lib/slf4j-simple-1.7.21.jar at http://some.ip:port/jars/slf4j-simple-1.7.21.jar with timestamp 1472138630497
但错误没有改变。有任何想法吗?

我找到了 this link ,这让我觉得这是一个错误。但该人尚未发布任何解决方案。

最佳答案

我遇到了完全相同的问题,并且还尝试在 Docker 上运行 Mesos/Spark/Python。

最终为我修复它的是添加 hadoop classpath使用 spark.executor.extraClassPath 输出到 Spark 执行程序的类路径配置选项。

我运行的完整命令是:

MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so \
${SPARK_HOME}/bin/pyspark --conf spark.master=mesos://mesos-master:5050 --driver-class-path $(${HADOOP_HOME}/bin/hadoop classpath) --conf spark.executor.extraClassPath=$(${HADOOP_HOME}/bin/hadoop classpath)

关于apache-spark - Spark worker 上缺少 SLF4J 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com