2015-06-13 28 views
4

运行火花外壳本地+定义的类路径一些第三方的JAR:火花壳牌:HOWTO定义JAR加载顺序

$ spark-shell --driver-class-path /Myproject/LIB/* 

内壳,我输入

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 
          ^

我想星火有首先加载/usr/local/spark-1.4.0-bin-hadoop2.6/lib/ spark-assembly-1.4.0-hadoop2.6.0.jar它不包含com.google.common.collect包。

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

问题:如何分辨火花外壳的火花1.4.0彬hadoop2.6/lib目录之前加载--driver类路径中的JAR /?

解答:从Sathish所在和霍顿组合提示评论
--jars必须用来代替​​。所有的jar文件都必须指定。将广口瓶必须是逗号分隔的,没有空间(按照spark-shell --help

$ spark-shell --jars $(echo ./Myproject/LIB/*.jar | tr ' ' ',') 
+1

尝试使用--jar选项,如下所示,火花壳--jar /Myproject/LIB/google-collections-1.0.jar – Sathish

+0

@Sathish --jars确实是解决方案,但键入时间很长,因为必须指定所有罐子。感谢下面的Holden技巧,它可以缩短语法。最初的问题已被编辑以包含答案。谢谢。 – Polymerase

回答

3

的驱动程序类路径标志需要被逗号分隔。因此,基于Setting multiple jars in java classpath,我们可以尝试spark-shell --driver-class-path $(echo ./Myproject/LIB/*.jar | tr ' ' ',')

+0

感谢您使用'$(echo ./Myproject/LIB/*.jar | tr''''')的技巧'分隔符必须是逗号。我编辑了我的最初问题以包含答案。 – Polymerase

+0

呵呵,谢谢。我也会编辑它 – Holden