在本地运行spark-shell +为某些第三方JAR定义类路径:
$ spark-shell --driver-class-path /Myproject/LIB/*
在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
^
我认为Spark首先加载了/usr/local/spark-1.4.0-bin-hadoop2.6/lib/ spark-assembly-1.4.0-hadoop2.6.0.jar #39; t包含com.google.common.collect包。
/ 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 /中的那些<?
ANSWER :结合Sathish和Holden评论的提示
必须使用--jars
代替--driver-class-path
。必须指定所有jar文件。罐子必须以逗号分隔,没有空格(根据spark-shell --help
)
$ spark-shell --jars $(echo ./Myproject/LIB/*.jar | tr ' ' ',')
答案 0 :(得分:4)
驱动程序类路径标志需要以逗号分隔。因此,根据Setting multiple jars in java classpath,我们可以尝试spark-shell --driver-class-path $(echo ./Myproject/LIB/*.jar | tr ' ' ',')