Apache spark-shell错误导入jar

时间:2015-12-29 17:05:35

标签: jar apache-spark apache-spark-1.5.2

我在Windows上安装了本地spark 1.5.2(hadoop 2.4),如here所述。

我尝试使用maven导入我在Java中创建的jar文件(jar是 jmatrw ,我在github上的here上传)。请注意,jar不包含spark程序,并且它没有依赖于spark。我尝试了以下步骤,但似乎没有人在我的安装中工作:

  • 我在" E中复制了库:/installprogram/spark-1.5.2-bin-hadoop2.4/lib/jmatrw-v0.1-beta.jar"
  • 编辑spark-env.sh并添加 SPARK_CLASSPATH =" E:/installprogram/spark-1.5.2-bin-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")的火花壳中,它说" INFO:添加jar ...带时间戳"

当我输入scala> import it.prz.jmatrw.JMATData时,spark-shell会回复error: not found: value it

我花了很多时间在Stackoverflow和Google上搜索,确实类似的Stakoverflow问题是here,但我还是无法导入我的自定义jar。

由于

1 个答案:

答案 0 :(得分:2)

1.5.2中有两个设置来引用外部jar。您可以为驱动程序或执行程序添加它。

我通过向spark-defaults.conf添加设置来执行此操作,但您可以在spark-shell或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。