【发布时间】:2017-06-29 19:50:55
【问题描述】:
我是 apache-spark 的新手,在尝试从本地计算机连接到包含 Spark 工作实例的远程服务器时遇到了一些问题。
我成功地使用JSCH 将 vis SSH 隧道连接到该服务器,但出现以下错误:
线程“主”java.lang.NoSuchMethodError 中的异常: scala.Predef$.$scope()Lscala/xml/TopScope$;在 org.apache.spark.ui.jobs.AllJobsPage.(AllJobsPage.scala:39) 在 org.apache.spark.ui.jobs.JobsTab.(JobsTab.scala:38) 在 org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:65) 在 org.apache.spark.ui.SparkUI.(SparkUI.scala:82) 在 org.apache.spark.ui.SparkUI$.create(SparkUI.scala:220) 在 org.apache.spark.ui.SparkUI$.createLiveUI(SparkUI.scala:162) 在 org.apache.spark.SparkContext.(SparkContext.scala:452) 在 server.Server$.main(Server.scala:45) 在 server.Server.main(Server.scala)
尝试连接到 Spark 时。
这是我的 scala 代码
val conf = new SparkConf().setAppName("Test").setMaster("spark://xx.xxx.xxx.x:7077")
val sc = new SparkContext(conf)
val rdd = sc.parallelize(Array(1, 2, 3, 4, 5)).count()
println(rdd)
错误中以(Server.scala:45) 突出显示的行45 是带有new SparkContext(conf) 的行。
在本地和远程机器上我都使用scala ~ 2.11.6。在我的本地pom.xml 文件中,我导入了scala : 2.11.6、spark-core_2.10 和spark-sql_2.10 两个~2.1.1。在我的服务器上,我安装了spark ~ 2.1.1。在服务器上,我还设法通过编辑conf/spark-env.sh 将master 设置为本地计算机。
当然,我设法测试了服务器的 spark,它工作得很好。
我做错了什么?
【问题讨论】:
-
你是如何连接的?您是使用
spark-submit提交工作还是运行spark-shell? -
如果您的意思是在服务器上,我使用
spark-shell运行我的测试。 -
你不需要在
spark-shell中创建一个新的SparkContext,一看到提示就有一个,名字是sc。跨度> -
你的意思是我已经用ssh连接到服务器了,所以不需要创建新的SparkContext?
-
我放的代码依赖于我的机器,在 Intellij Idea 上。我没有尝试在服务器的 spark-shell 上创建新的上下文。
标签: scala apache-spark ssh