spark入门wordCount之scala程序运行时报错:无法找到主类 =

Jetbrains IDEA Ultimate 2018.3.1

sbt 1.2.7

scala 2.11.8

在这里卡住快一学期了,终于解决。

1.运行scala版本的wordCount,首先new project,选择sbt,选版本号,等idea帮我们做好默认配置,没啥好讲

2.去maven repository官网查询spark-core和scala版本的对应关系,并添加到build.sbt文件中。

这里要注意,第一文件中配置的形式类似键值对,各“键值对”之间用空行隔开;

第二scala版本、spark-core版本必须对应,否则会报错。这个只要照着maven中对应版本来就行

 

3.随便找个文本文档,写WordCount进行测试

package com.lightdance

import org.apache.spark.{SparkConf, SparkContext}

object FirstTest {
  val  INPUT_FILE = "./src/main/scala/README.md"
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("wordCount")
    val sc = new SparkContext(conf)
    val input = sc.textFile(INPUT_FILE)
    val words = input.flatMap(line => line.split(" "))

    val counts = words.map(word => (word, 1)).reduceByKey { case (x, y) => x + y }
    counts.saveAsTextFile("./outputFiles")
  }
}

4.程序报错a master url must be set in your configuration

这个问题是因找不到程序运行的master,只要设置一下idea的环境变量选项就ok

run->edit configuration->VM options里面加上 -Dspark.master=local

 

5.最最头大的问题,无法找到主类 =

好久好久,终于发现原因。

写java习惯了,等号这样的运算符跟变量之间习惯性地会加上空格,结果在设置VM options的时候, -Dspark.master=local给写成了 -Dspark.master = local

然而这个东西并不会像java语句那样无视空格,它把空格当作参数了...

因此只要将 -Dspark.master = local里面的空格去掉就好了。

 

另外需要注意,sbt项目里每个object间是相对独立的,对一个可运行的object的run->edit configuration->VM options更改不会影响到其他可运行的object程序。因此运行同一个项目中其他的scala object时需要重新配置一下VM options

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值