首先是安裝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...