【发布时间】: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