我是apache-spark的新手,我在尝试从本地计算机连接到包含Spark工作实例的远程服务器时遇到了一些问题。
我成功设法使用JSCH将SSH隧道连接到该服务器,但是我收到以下错误:
线程中的异常" main" java.lang.NoSuchMethodError: 。scala.Predef $ $范围()Lscala / XML / TopScope $;在 org.apache.spark.ui.jobs.AllJobsPage。(AllJobsPage.scala:39)at at org.apache.spark.ui.jobs.JobsTab。(JobsTab.scala:38)at at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:65)at org.apache.spark.ui.SparkUI。(SparkUI.scala:82)at org.apache.spark.ui.SparkUI $ .create(SparkUI.scala:220)at org.apache.spark.ui.SparkUI $ .createLiveUI(SparkUI.scala:162)at at org.apache.spark.SparkContext。(SparkContext.scala:452)at server.Server $ .main(Server.scala:45)at 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)
错误中45
处突出显示的行(Server.scala: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
。在我的服务器上,我安装了master
。在服务器上,我还设法通过编辑conf/spark-env.sh
将forall(w in 1..num_workers) (
if jobtype[job] == "NC" then assignment[job,(w mod 2 ==0)]=1
else assignment[job,(w mod 2 !=0)]=1 endif
)
设置为本地计算机。
当然,我设法测试了服务器的火花,它运行得很好。
我做错了什么?
答案 0 :(得分:1)
来自setMaster的文档:
要连接的主网址,例如" local"用一个线程在本地运行," local [4]"至 在本地运行4核,或者#34; spark:// master:7077"在Spark独立集群上运行。
如果你从spark群集中运行它(据我所知),你应该使用local[n]