没用过IDEA工具,据说跟Eclipse差很少,sbt在Idea其实就等于maven在Eclipse。Spark运行在JVM中,因此要在Idea下运行spark,就先要安装JDK 1.8+ 而后加入Scala和Spark的依赖包就能够进行开发了,不要安装低版本的JDK。html
先下载Idea的社区版java
https://www.jetbrains.com/idea/download/download-thanks.html?platform=windows&code=IICapache
安装完后下载Scala插件windows
新建sbt工程maven
这里须要注意,若是选择Spark2.0以上,那么Scala要选2.11以上。由于我用的是Spark2.0.2,因此就选择2.11.1,选择JDK版本后确认。ide
工程建立成功后的目录工具
编辑build.sbt文件,添加Spark依赖oop
name := "Scala" version := "1.0" scalaVersion := "2.11.1" libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.0.2"
保存,等待下载完依赖的包。ui
PS: Scala版本对应的Spark可在官网查询idea
在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目录下