【问题标题】:How to run an interactive spark application from spark-shell/spark-submit如何从 spark-shell/spark-submit 运行交互式 Spark 应用程序
【发布时间】:2017-10-14 16:45:26
【问题描述】:

我有一个 spark 应用程序,它可以读取大数据,将其加载到内存中,并在两者之间设置所有内容,以便用户多次查询内存中的数据帧。完成查询后,控制台会提示用户继续输入新的输入集或退出应用程序。

我可以在 IDE 上很好地做到这一点。但是,我可以从 spark-shell 运行这个交互式 spark 应用程序吗?

我之前使用过 spark 作业服务器来实现对内存加载数据帧的多个交互式查询,但不是从 shell 中。有什么指点吗?

谢谢!

更新 1: 这是项目 jar 的外观及其与所有其他依赖项打包的方式。

jar tf target/myhome-0.0.1-SNAPSHOT.jar 
META-INF/MANIFEST.MF
META-INF/
my_home/
my_home/myhome/
my_home/myhome/App$$anonfun$foo$1.class
my_home/myhome/App$.class
my_home/myhome/App.class
my_home/myhome/Constants$.class
my_home/myhome/Constants.class
my_home/myhome/RecommendMatch$$anonfun$1.class
my_home/myhome/RecommendMatch$$anonfun$2.class
my_home/myhome/RecommendMatch$$anonfun$3.class
my_home/myhome/RecommendMatch$.class
my_home/myhome/RecommendMatch.class

并使用以下选项运行 spark-shell

spark-shell -i my_home/myhome/RecommendMatch.class --master local --jars /Users/anon/Documents/Works/sparkworkspace/myhome/target/myhome-0.0.1-SNAPSHOT.jar 

但 shell 在启动时会抛出以下消息。根据 localhost:4040 显示的环境加载 jars

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
17/05/16 10:10:01 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/05/16 10:10:06 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Spark context Web UI available at http://192.168.0.101:4040
Spark context available as 'sc' (master = local, app id = local-1494909601904).
Spark session available as 'spark'.
That file does not exist

Welcome to
 ...

更新 2(使用 spark-submit) 尝试使用 jar 的完整路径。接下来,尝试将项目 jar 复制到 bin 位置。

pwd
/usr/local/Cellar/apache-spark/2.1.0/bin

spark-submit --master local —-class my_home.myhome.RecommendMatch.class --jars myhome-0.0.1-SNAPSHOT.jar
Error: Cannot load main class from JAR file:/usr/local/Cellar/apache-spark/2.1.0/bin/—-class

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    尝试使用 -i <path_to_file> 选项来运行文件中的 scala 代码或 scala shell :load <path_to_file> 函数。

    相关问答:Spark : how to run spark file from spark shell

    【讨论】:

    • 我看到了这个并尝试了它。请看我上面的更新。
    • 这种风格适用于原始 scala 文件,使用的语法与您在 shell 中使用的语法相同。您基本上只是通过文件传递命令,而不是直接在 shell 中输入它们
    • 啊,谢谢。那么我可以像这样调用 spark-shell spark-shell --master local --class my_home.myhome.RecommendMatch.class --jars /Users/anon/Documents/Works/sparkworkspace/myhome/target/myhome-0.0.1-快照.jar ?没有文件未找到错误,但我仍在为如何调用此类的主函数而苦苦挣扎
    【解决方案2】:

    以下命令用于运行交互式 spark 应用程序。

    spark-submit /usr/local/Cellar/apache-spark/2.1.0/bin/myhome-0.0.1-SNAPSHOT.jar

    请注意,这是一个以主类作为入口点和所有依赖库构建的 uber jar。查看http://maven.apache.org/plugins/maven-shade-plugin/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多