沒用過IDEA工具,聽說跟Eclipse差不多,sbt在Idea其實就等於maven在Eclipse。Spark運行在JVM中,所以要在Idea下運行spark,就先要安裝JDK 1.8+ 然後加入Scala和Spark的依賴包就可以進行開發了,不要安裝低版本的JDK。 先下載Idea的社區版 ht ...
沒用過IDEA工具,聽說跟Eclipse差不多,sbt在Idea其實就等於maven在Eclipse。Spark運行在JVM中,所以要在Idea下運行spark,就先要安裝JDK 1.8+ 然後加入Scala和Spark的依賴包就可以進行開發了,不要安裝低版本的JDK。
先下載Idea的社區版
https://www.jetbrains.com/idea/download/download-thanks.html?platform=windows&code=IIC
Scala、Spark環境
安裝完後下載Scala插件
新建sbt工程
這裡需要註意,如果選擇Spark2.0以上,那麼Scala要選2.11以上。因為我用的是Spark2.0.2,所以就選擇2.11.1,選擇JDK版本後確認。
工程創建成功後的目錄
編輯build.sbt文件,添加Spark依賴
name := "Scala" version := "1.0" scalaVersion := "2.11.1" libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.0.2"
保存,等待下載完依賴的包。
PS: Scala版本對應的Spark可在官網查詢
Helloworld
在project下 src/scala包下創建一個scala.class
helloworld.scala
import org.apache.spark.{SparkConf, SparkContext} /** * Created by Jan on 2016/12/19. */ object Helloworld { def main(args: Array[String]) { val logFile = "./README.md" // Should be some file on your server. val conf = new SparkConf().setAppName("Simple Application").setMaster("local") val sc = new SparkContext(conf) val logData = sc.textFile(logFile, 2).cache() val numAs = logData.filter(line => line.contains("h")).count() val numBs = logData.filter(line => line.contains("j")).count() println("Lines with h: %s, Lines with j: %s".format(numAs, numBs)) } }
上面代碼目的是:在本地讀取一個叫README.md的文件,通過Spark記憶體分析,計算字母“h”和字母“j”在文件中出現多少次。
運行代碼
可能出現的錯誤:
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
原因是缺少了winutils.exe文件,這個而且沒有設置HADOOP_HOME
解決辦法
1. 下載hadoop到本機並添加bin目錄到環境變數
http://hadoop.apache.org/releases.html
2. 網上搜下winutils.exe文件,下載後放到hadoop的bin目錄下
http://download.csdn.net/detail/u014313009/7671379