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

rez*_*eza 26 scala apache-spark

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

build.sbt
src/main
src/main/scala
src/main/scala/Tester.scala
src/main/scala/main.scala
Run Code Online (Sandbox Code Playgroud)

其中Tester是一个函数类(name是print()),main有一个要运行的对象,打印出"Hi!" (来自spark文档)成功创建了一个由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();
Run Code Online (Sandbox Code Playgroud)

San*_*hit 38

您可以通过提供带有参数的罐子来尝试如下

./spark-shell --jars pathOfjarsWithCommaSeprated
Run Code Online (Sandbox Code Playgroud)

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

spark.driver.extraClassPath  pathOfJarsWithCommaSeprated
Run Code Online (Sandbox Code Playgroud)


Sam*_*yek 23

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

scala> :require /path/to/file.jar
Added '/path/to/file.jar' to classpath.
Run Code Online (Sandbox Code Playgroud)

  • 我尝试 `:require` jar 但收到如下错误: *无法加载路径 '/export/home/xxx.jar',因为现有的类路径条目冲突。* 我如何找出导致冲突的原因?谢谢! (2认同)