我已经下载了为Hadoop 2.6及更高版本预先构建的Apache Spark 1.4.1.我有两台Ubuntu 14.04机器.其中一个我用一个奴隶设置为Spark master,第二个机器运行一个Spark slave.执行./sbin/start-all.sh命令时,主站和从站成功启动.之后,我将spark-shell设置示例PI程序运行--master spark://192.168.0.105:7077到Spark Web UI中显示的Spark主URL.
到目前为止一切都很好.
我创建了一个Java应用程序,并尝试将其配置为在需要时运行Spark作业.我在pom.xml文件中添加了spark依赖项.
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.11</artifactId>
<version>1.4.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我创建了一个SparkConfig:
private parkConf sparkConfig = new SparkConf(true)
.setAppName("Spark Worker")
.setMaster("spark://192.168.0.105:7077");
Run Code Online (Sandbox Code Playgroud)
我创建了一个SparkContext使用SparkConfig:
private SparkContext sparkContext = new SparkContext(sparkConfig);
Run Code Online (Sandbox Code Playgroud)
在此步骤中,将引发以下错误:
java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext
at org.apache.spark.SparkContext.org$apache$spark$SparkContext$$assertNotStopped(SparkContext.scala:103)
at org.apache.spark.SparkContext.getSchedulingMode(SparkContext.scala:1503)
at org.apache.spark.SparkContext.postEnvironmentUpdate(SparkContext.scala:2007)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:543)
at com.storakle.dataimport.spark.StorakleSparkConfig.getSparkContext(StorakleSparkConfig.java:37)
at com.storakle.dataimport.reportprocessing.DidNotBuyProductReport.prepareReportData(DidNotBuyProductReport.java:25)
at com.storakle.dataimport.messagebroker.RabbitMQMessageBroker$1.handleDelivery(RabbitMQMessageBroker.java:56)
at com.rabbitmq.client.impl.ConsumerDispatcher$5.run(ConsumerDispatcher.java:144)
at com.rabbitmq.client.impl.ConsumerWorkService$WorkPoolRunnable.run(ConsumerWorkService.java:99)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
如果我改变Spark主人,local一切正常.
private parkConf sparkConfig = new SparkConf(true)
.setAppName("Spark Worker")
.setMaster("local");
Run Code Online (Sandbox Code Playgroud)
我在托管Spark Master的同一台机器上运行Java应用程序.
我不知道为什么会这样?到目前为止,我发现的每个文档和示例都表明代码应该与Spark Master URL一起使用.
任何想法为什么会发生这种情况以及我如何解决它?我花了很多时间试图弄清楚这一个,到目前为止没有运气.
我认为你使用Spark 1.4.1 for Scala 2.10.因此,你需要spark-core_2.10而spark-streaming_2.10不是2.11.spark-core_2.11与为Scala 2.10构建的Spark不兼容.
要为Scala 2.11构建Spark,请参阅:
http://spark.apache.org/docs/latest/building-spark.html#building-for-scala-211
| 归档时间: |
|
| 查看次数: |
7486 次 |
| 最近记录: |