如何理解spark --jars、extraClassPath和extraLibraryPath的关系和使用?

Qin*_*ang 6 classpath apache-spark

首先,我也见过类似的问题。另一个问题链接 但我认为它的答案不是很清楚。

\n\n

我的一些问题如下\xef\xbc\x9a

\n\n

\xef\xbc\x881\xef\xbc\x89 --jars 参数 与spark.executor.extraClassPath 参数相同,如果不同,有什么区别?

\n\n

我检查了spark-submit命令行中的--jars上的--help,解释如下:

\n\n
 Comma-separated list of local jars to include on the driver\n                          and executor classpaths.\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我在spark-submit命令行中没有找到spark.executor.extraClassPath的解释。最后在spark官网找到了如下关于spark.executor.extraClassPath的解释:

\n\n
Extra classpath entries to prepend to the classpath of executors. \n
Run Code Online (Sandbox Code Playgroud)\n\n

从两个\xef\xbc\x9f的解释来看貌似效果一样

\n\n

但我从另一个问题链接中看到以下段落:

\n\n
\n

--jars 与 SparkContext.addJar:这些是相同的,只有一个是通过 Spark 提交设置的,另一个是通过代码设置的。选择更适合您的一款。需要注意的一件重要事情是,使用这两个选项中的任何一个都不会将 JAR 添加到驱动程序/执行程序类路径中,您需要使用这两个选项上的 extraClassPath 配置显式添加它们。

\n
\n\n

怎么又这样了?

\n\n

\xef\xbc\x882\xef\xbc\x89spark.executor.extraClassPath 和spark.executor.extraLibraryPath,与spark.driver.extraXXXXpath 相同,前缀相同\xe3\x80\x82

\n\n

extraClassPath 和 extraLibraryPath 有什么区别?

\n\n

Spark.executor.extraLibraryPath的解释来自spark官网\xe3\x80\x82

\n\n
Set a special library path to use when launching executor JVM\'s.\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不明白,这个解释和--jars和spark.executor.extraClassPath有什么区别?

\n\n

我期待您的解释和答复\xef\xbc\x8c谢谢。

\n