Spark-Shell:如何定义JAR加载顺序

Pol*_*ase 7 scala apache-spark

在本地运行spark-shell +为某些第三方JAR定义类路径:

$ spark-shell --driver-class-path /Myproject/LIB/*
Run Code Online (Sandbox Code Playgroud)

在shell中,我输入了

scala> import com.google.common.collect.Lists
<console>:19: error: object collect is not a member of package com.google.common
   import com.google.common.collect.Lists
                            ^
Run Code Online (Sandbox Code Playgroud)

我想Spark首先加载了/usr/local/spark-1.4.0-bin-hadoop2.6/lib/ spark-assembly-1.4.0-hadoop2.6.0.jar,它不包含com.google.common.收集包裹.

/ Myproject/LIB /包含google-collections-1.0.jar并具有com.google.common.collect.但是,这个罐子似乎被忽略了.

问题:如何告诉spark-shell在--driver-class-path中加载JARs之前在spark-1.4.0-bin-hadoop2.6/lib /中的那些?

答案:
--jars必须使用来自Sathish和Holden注释的提示来代替--driver-class-path.必须指定所有jar文件.罐子必须以逗号分隔,没有空格(按照spark-shell --help)

$ spark-shell --jars $(echo ./Myproject/LIB/*.jar | tr ' ' ',')
Run Code Online (Sandbox Code Playgroud)

Hol*_*den 4

驱动程序类路径标志需要以逗号分隔。所以,基于在java类路径中设置多个jar,我们可以尝试spark-shell --driver-class-path $(echo ./Myproject/LIB/*.jar | tr ' ' ',')