如何从spark-shell / spark-submit

时间:2017-05-15 19:21:42

标签: apache-spark

我有一个可以读取大数据的火花应用程序,将其加载到内存中并将所有内容设置为准备好供用户多次查询内存中的数据帧。查询完成后,系统会在控制台上提示用户继续输入新的输入或退出应用程序。

我可以在IDE上做得很好。但是,我可以从spark-shell运行这个交互式火花应用吗?

我之前使用过spark job服务器来实现对内存加载数据帧的多次交互式查询,但不是来自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

中显示的环境加载jar
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

2 个答案:

答案 0 :(得分:0)

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

相关Q&amp; A:Spark : how to run spark file from spark shell

答案 1 :(得分:0)

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

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

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