【问题标题】:How to get the working directory in executor如何在执行器中获取工作目录
【发布时间】:2016-01-15 09:20:43
【问题描述】:

我正在使用以下命令提交 Spark 作业,我希望将 jar 和 config 文件发送到每个执行器并加载到那里

spark-submit --verbose \
--files=/tmp/metrics.properties \ 
--jars /tmp/datainsights-metrics-source-assembly-1.0.jar \ 
--total-executor-cores 4\
--conf "spark.metrics.conf=metrics.properties" \
--conf "spark.executor.extraClassPath=datainsights-metrics-source-assembly-1.0.jar"  \
--class org.microsoft.ofe.datainsights.StartServiceSignalPipeline \
./target/datainsights-1.0-jar-with-dependencies.jar

--files 和--jars 是用来发送文件给executors的,我发现文件是发送到executor的工作目录的,比如'worker/app-xxxxx-xxxx/0/

但是当作业运行时,执行器总是抛出异常,说它找不到文件'metrics.properties'或'datainsights-metrics-source-assembly-1.0.jar'中包含的类。该作业似乎是在另一个目录而不是工作目录下寻找文件。

你知道如何加载发送给执行者的文件吗?

这里是跟踪(类 'org.apache.spark.metrics.PerfCounterSource' 包含在 jar 'datainsights-metrics-source-assembly-1.0.jar' 中):

ERROR 2016-01-14 16:10:32 Logging.scala:96 - org.apache.spark.metrics.MetricsSystem: Source class org.apache.spark.metrics.PerfCounterSource cannot be instantiated
java.lang.ClassNotFoundException: org.apache.spark.metrics.PerfCounterSource
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) ~[na:1.7.0_80]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_80]
at java.security.AccessController.doPrivileged(Native Method) [na:1.7.0_80]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_80]
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[na:1.7.0_80]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.7.0_80]
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[na:1.7.0_80]
at java.lang.Class.forName0(Native Method) ~[na:1.7.0_80]
at java.lang.Class.forName(Class.java:195) ~[na:1.7.0_80]

【问题讨论】:

    标签: apache-spark spark-streaming


    【解决方案1】:

    您的 --jars 参数中似乎有错字,因此可能是它实际上并未加载文件并以静默方式继续。

    【讨论】:

    • 但是文件metrics.properties呢?也找不到。另外,我纠正了错字,它仍然不起作用
    • 您能否分享更多信息,也许是 spark-submit 的日志输出?
    • 你能分享完整的日志吗? Spark 实际上是非常冗长的,默认情况下它会记录日志,这意味着您可以看到有关 JAR 正在发送(或不发送,如果这是一个问题)的消息,并且可能与文件类似。如果没有发货是有原因的,它可能在日志中。
    • 但这不是答案
    猜你喜欢
    • 1970-01-01
    • 2013-05-29
    • 2013-05-19
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2021-01-18
    相关资源
    最近更新 更多