Intellij IDEA 2017 經過scala工程運行wordcount

首先是安裝scala插件,能夠經過idea內置的自動安裝方式進行,也能夠手動下載可用的插件包以後再經過idea導入。apache

scala插件安裝完成以後,新建scala項目,右側使用默認的sbt緩存

 

點擊Next,到這一步就開始踩坑了,scala的可選版本比較多,從2.12到2.10都有,個人環境下用wordcount的例子嘗試了幾種狀況:ide

先貼上測試代碼,如下的測試全都是基於這段代碼進行的。oop

package com.hq

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

object WordCount {
  def main(args: Array[String]) {
    if (args.length < 1) {
      System.err.println("Usage: <file>")
      System.exit(1)
    }

    val conf = new SparkConf()
    val sc = new SparkContext("local","wordcount",conf)
    val line = sc.textFile(args(0))

    line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)

    sc.stop()
  }
}

 

1. scala若是用2.12.4的版本,運行時就會報錯。可能跟我寫的代碼有關,scala 2.12.x使用spark的方式可能不同,後面再看。不過官網上有說spark-2.2.1只能與scala-2.11.x兼容,因此這個就沒有再試了測試

2. scala若是使用2.11.x的版本,我這邊最初按照網上的各類教程,一直在嘗試使用spark-assembly-1.6.3-hadoop2.6.0.jar,結果也是報錯。idea

    而後想着試一下最新的spark-2.2.1-bin-hadoop2.7,可是裏面沒有spark-assembly-1.6.3-hadoop2.6.0.jar,就索性把jars目錄整個加到工程中,運行也是出錯,但明顯是能運行了。spa

百度之,加上一句設置就能夠了插件

conf.set("spark.testing.memory", "2147480000")

3. scala若是使用2.10.x,根據網上的各類教程,我使用的是2.10.6,只須要在工程中加入spark-assembly-1.6.3-hadoop2.6.0.jar這個包便可,固然,還有內存大小的配置。scala

 

另外,在使用2.10.6的時候,idea在下載scala-library, scala-compiler, scala-reflect各類包時都出錯,只能手動下載,再放到緩存目錄下: "C:\Users\Administrator\.ivy2\cache\org.scala-lang"。code

順便收藏一個網址,也許之後還要用: http://mvnrepository.com/artifact/org.scala-lang/scala-library

 

待處理的問題:

1. 運行時內存大小的設置,應該能夠經過修改idea的配置項來作到,就不用在代碼裏面加這個

2. idea的緩存目錄還須要修改,否則用的時間長了,C盤要崩...

3. 雖然wordcount運行成功了,可是會有warning...

相關文章
相關標籤/搜索