Intellij IDEA 2017 通過scala工程運行wordcount


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

scala插件安裝完成之后,新建scala項目,右側使用默認的sbt

 

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

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

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,結果也是報錯。

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

百度之,加上一句設置就可以了

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

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

 

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

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

 

待處理的問題:

1. 運行時內存大小的設置,應該可以通過修改idea的配置項來做到,就不用在代碼里面加這個

2. idea的緩存目錄還需要修改,不然用的時間長了,C盤要崩...

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM