如何在spark-shell中运行外部jar函数

时间:2016-10-26 05:24:19

标签: scala apache-spark

我通过这个文件树从项目中创建了一个jar包:

build.sbt
src/main
src/main/scala
src/main/scala/Tester.scala
src/main/scala/main.scala

其中Tester是一个函数类(name是print()),main有一个要运行的对象,打印出“Hi!” (来自火花文件) 由sbt成功创建了一个jar文件,并在spark-submit

中运行良好

现在我想将它添加到spark-shell中并使用Tester类作为创建对象的类... 我将jar文件添加到spark-default.conf中,但是:

scala> val t = new Tester();
<console>:23: error: not found: type Tester
       val t = new Tester();

3 个答案:

答案 0 :(得分:34)

你可以尝试提供带有参数的罐子,如下所示

./spark-shell --jars pathOfjarsWithCommaSeprated

或者您可以在spark-defaults.conf中添加以下配置,但请记住从spark-defaults末尾删除模板

spark.driver.extraClassPath  pathOfJarsWithCommaSeprated

答案 1 :(得分:17)

如果要在输入spark-shell后将.jar添加到类路径中,请使用:require。像:

scala> :require /path/to/file.jar
Added '/path/to/file.jar' to classpath.

答案 2 :(得分:1)

我尝试了两种选择,并且都为我工作。

  1. class GeneralHolder<DataModel, ClickListner>( private val binding: ViewDataBinding, val listener: ClickListner ) : RecyclerView.ViewHolder(binding.root) { fun bind(data: DataModel) { binding.setVariable(BR.item, data) binding.setVariable(BR.presenter, listener) binding.setVariable(BR.itemPosition, adapterPosition) binding.executePendingBindings() } }
  2. 打开spark-shell -Type:help,您将获得所有可用的帮助。 在下面添加

    :需要/ full_path_of_jar

enter image description here