在spark命令中使用--driver-class-path有什么用?

dev*_*v ツ 6 apache-spark

根据spark docs,

要开始,您需要在spark类路径中包含特定数据库的JDBC驱动程序.例如,要从Spark Shell连接到postgres,您将运行以下命令:

bin/spark-shell --driver-class-path postgresql-9.4.1207.jar --jars postgresql-9.4.1207.jar
Run Code Online (Sandbox Code Playgroud)

工作正常没有--driver-class-path.那么,--driver-class-pathspark命令的用途是什么?

use*_*411 8

--driver-class-path或者spark.driver.extraClassPath可以用于仅为Spark驱动程序修改类路径.这对于执行程序不需要的库(例如,仅在本地使用的任何代码)非常有用.

与此相比,--jars或者spark.jars不仅会将jar添加到驱动程序和执行程序类路径,还会在集群上分发存档.如果特定的jar仅由驱动程序使用,则这是不必要的开销.

  • 如果我理解得很好 --jars 是 --driver-class-path 的超集,但在我的 Spark 2.4.3 上,如果我只使用 --jars ,我会得到一个“没有合适的驱动程序”异常。如果我同时使用 --jars 和 --driver-class-path ,一切都会正常运行。 (2认同)