我在Windows上安装了本地spark 1.5.2(hadoop 2.4),如下所述。
我正试图导入一个我使用maven在Java中创建的jar文件(这个jar是我在github上上传的jmatrw)。请注意,jar不包括spark程序,也没有对spark的依赖关系。我尝试了以下步骤,但似乎没有人在我的安装中工作:
- 我在"E:/installprogram/spark-1.5.2-in-hadoop2.4/lib/jmatrw-v0.1-beta.jar"中复制了库
- 编辑spark-env.sh并添加spark_CLASSPATH="E:/installprogram/spark-1.5.2-in-hadoop2.4/lib/jmatrw-v0.1-beta.jar"
- 在命令窗口中,我运行
> spark-shell --jars "E:/installprogram/spark-1.5.2-bin-hadoop2.4/lib/jmatrw-v0.1-beta.jar"
,但它显示"警告:跳过远程jar" - 在我尝试做
scala> sc.addJar("E:/installprogram/spark-1.5.2-bin-hadoop2.4/lib/jmatrw-v0.1-beta.jar")
的spark shell中,它写着"信息:添加了jar…带有时间戳"
当我键入scala> import it.prz.jmatrw.JMATData
时,spark shell会用error: not found: value it
进行回复。
我花了很多时间在Stackoverflow和谷歌上搜索,这里确实有一个类似的Stakeoverflow问题,但我仍然无法导入我的自定义jar。
感谢
1.5.2中有两种设置可以引用外部jar。您可以为驱动程序或执行程序添加它。
我通过在spark-defaults.conf
中添加设置来实现这一点,但您可以在sparkshell或SparkConf
中设置这些设置。
spark.driver.extraClassPath /path/to/jar/*
spark.executor.extraClassPath /path/to/jar/*
我看不出你做这件事的方式有什么真正的错误,但你可以尝试上面的conf方法,或者使用SparkConf
设置这些方法
val conf = new SparkConf()
conf.set("spark.driver.extraClassPath", "/path/to/jar/*")
val sc = new SparkContext(conf)
总的来说,我不喜欢在Windows上使用Spark。尝试使用Unix/Linux。