在IntelliJ中运行Spark Demo时遇到的问题及解决办法

这一阶段主要是在学习Scala,知乎上说推荐先学习一下Haskell再学习Scala,但我觉得不一定要曲线救国。不过在学习过程中遇到的困难的确不少,好歹Scala是公认的其特性的复杂程度是要超过C++的嘛:-)

我学习Scala的主要动机是想研究Spark,尽管Python和Java等都可以用来开发Spark应用,但是Spark本身就是一个Scala项目,而且Spark也不能算是一个成熟的产品,也许在我遇到问题的时候用Scala可以更加高效的解决问题

今天初步看了部分Spark的官方文档,在IntelliJ中,我尝试运行了SparkPi,整个过程遇到一些问题

首先是当我把相关的包导入好后,Run,报错:

Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:185)
    at SparkDemo.SimpleApp$.main(SimpleApp.scala:13)
    at SparkDemo.SimpleApp.main(SimpleApp.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Using Spark‘s default log4j profile: org/apache/spark/log4j-defaults.propertie

解决办法:在IDE中点击Run -> Edit Configuration,在右侧VM options中输入“-Dspark.master=local”,指示本程序本地单线程运行

再次运行,依旧出错:

Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;
at akka.actor.ActorCell$.<init>(ActorCell.scala:336)
at akka.actor.ActorCell$.<clinit>(ActorCell.scala)
at akka.actor.RootActorPath.$div(ActorPath.scala:159)
at akka.actor.LocalActorRefProvider.<init>(ActorRefProvider.scala:464)
at akka.actor.LocalActorRefProvider.<init>(ActorRefProvider.scala:452)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$2.apply(DynamicAccess.scala:78)
at scala.util.Try$.apply(Try.scala:191)
at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:73)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
at scala.util.Success.flatMap(Try.scala:230)
at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:84)
at akka.actor.ActorSystemImpl.liftedTree1$1(ActorSystem.scala:584)
at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:577)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:141)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:108)
at akka.Akka$.delayedEndpoint$akka$Akka$1(Akka.scala:11)
at akka.Akka$delayedInit$body.apply(Akka.scala:9)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:383)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
at scala.App$class.main(App.scala:76)
at akka.Akka$.main(Akka.scala:9)
at akka.Akka.main(Akka.scala)

之前的一篇博客提到过,我安装的Scala版本为2.11.5,Spark版本为1.2.0,看来Spark版本和Scala版本还是存在一些兼容性问题,将Scala改为2.10.4问题就解决了,程序运行的结果:

Using Spark‘s default log4j profile: org/apache/spark/log4j-defaults.properties
........15/07/27 19:50:23 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, localhost, PROCESS_LOCAL, 1260 bytes)
15/07/27 19:50:23 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
15/07/27 19:50:23 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 727 bytes result sent to driver
15/07/27 19:50:23 INFO TaskSetManager: Starting task 1.0 in stage 0.0 (TID 1, localhost, PROCESS_LOCAL, 1260 bytes)
15/07/27 19:50:23 INFO Executor: Running task 1.0 in stage 0.0 (TID 1)
15/07/27 19:50:23 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 116 ms on localhost (1/2)
15/07/27 19:50:23 INFO Executor: Finished task 1.0 in stage 0.0 (TID 1). 727 bytes result sent to driver
15/07/27 19:50:23 INFO TaskSetManager: Finished task 1.0 in stage 0.0 (TID 1) in 22 ms on localhost (2/2)
15/07/27 19:50:23 INFO DAGScheduler: Stage 0 (reduce at SparkPI.scala:20) finished in 0.146 s
15/07/27 19:50:23 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool
15/07/27 19:50:23 INFO DAGScheduler: Job 0 finished: reduce at SparkPI.scala:20, took 0.380229 s
Pi is roughly 3.13726
15/07/27 19:50:23 INFO SparkUI: Stopped Spark web UI at http://211.66.87.51:4040
15/07/27 19:50:23 INFO DAGScheduler: Stopping DAGScheduler
15/07/27 19:50:24 INFO MapOutputTrackerMasterActor: MapOutputTrackerActor stopped!
15/07/27 19:50:24 INFO MemoryStore: MemoryStore cleared
15/07/27 19:50:24 INFO BlockManager: BlockManager stopped
15/07/27 19:50:24 INFO BlockManagerMaster: BlockManagerMaster stopped
15/07/27 19:50:24 INFO SparkContext: Successfully stopped SparkContext
时间: 2024-10-02 00:45:28

在IntelliJ中运行Spark Demo时遇到的问题及解决办法的相关文章

在linux中运行py文件时,及时知道错误信息

为了能在linux中运行py文件时,及时知道错误信息,可以通过以下代码 commands.getstatusoutput("echo %s %s >> /tmp/debug.log" % (brand, version)) 将brand和version的值放置/tmp/debug.log中用以查看.

eclipse运行 Maven Test命令时控制台输出乱码的解决办法

在Maven的pom.xml文件中增加: <properties>      <argLine>-Dfile.encoding=UTF-8</argLine> </properties> 今天突然遇到这个问题了,上网搜了一下,答案一大堆,还是这个最好!记录一下! eclipse运行 Maven Test命令时控制台输出乱码的解决办法,布布扣,bubuko.com

android 读取DDMS里的文件时打不开,解决办法

1.问题:安卓自带数据库SQLite数据读取时(ddms---data----data----yourprojectname----databases),当点击data时目录展不开.从而无法查看数据库表中的数据. 2.方法:第一获得ROOT权限,如何获得root权限?我下载了一个一键root工具,挺好用的 (muzisoft.exe)安装在电脑上,并连接手机.点击一键root,等几分钟即可. 3.修改要查看文件的权限,下载一个RE(R.E管理器)并安装在手机上,运行,长按要查看的文件,在弹出的列

Loadrunner 并发时&#39;Error -27492 HttpSendRequest failed&#39;解决办法

问题点 Loadrunner11对脚本单独回放时,回放100%正常无报错信息,但是运行场景多个用户并发测试时,运行一段时间后,每次均报错: Error -27492: "HttpSendRequest" failed, Windows error code=12002 百度了一下,答案千篇一律,基本解决办法都是: "在Runtime-setting中的preferences-->options-->http-request connect timeout(sec)

Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1 import android.view.View.OnClickListener; 2 import android.content.DialogInterface.OnClickListener; 其实,当我们用某个Listener时,不一定就要import它,直接用全名去定义就不需要import了,例如 1 mButton1.setOnClickListener(new OnClickListener() 2 { 3 4 @O

[Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法

转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类控件时(比如TextView),注册ListView的监听setOnItemClickListener之后,当点击Item时候会触发onItemClick回调. 但是,当Item中存在Button(继承于Button)的控件时,onItemClick回调不会被触发. 解决方案: 在Item的布局文件

get/post时中文乱码问题的解决办法

常有的方法,get请求用在tomcat的编码改为utf-8 即可 post 过滤器就可以 一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码: 3.getBytes() 是通过平台默认字符集进行编码: 二.中文乱码出现 在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为在安装时没有设置:而在Servlet中

在windows中的DOS窗口执行adb shell出错的解决办法

1,首先要检查是否已经配置好环境变量或者在platform-tools目录(adb.exe存在的路径)下执行的adb shell 2,步骤1没问题的话,那么运行:adb kill-server 再执行:adb shell 好了,问题解决(PS:反正我的解决了) 在windows中的DOS窗口执行adb shell出错的解决办法,布布扣,bubuko.com

Android SDK安装时碰到的问题之解决办法

问题: hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com> Fetching URL: https://dl-ssl.google.com/android/... 解决办法: 第一步: 打开Windows中C:\WINDOWS\system32\drivers\etc\hosts,Linux中/etc/hosts文件,然后添加以下内容: 203.208.46.146 dl.goo