最近开始弄毕设,要求用spark。废了很久时间装上了和大家分享下。
前言
简单来说,安装JDK,安装IntelliJ Idea,安装Scala插件,在build.sbt中声明Spark依赖,等IDE下载依赖,安装Hadoop,下载winutils.exe,安装完成。
具体来说,spark是用scala编写的,所以我们要先安装scala。跑scala要用java,所以我们要先安装java。安装看下面。
安装步骤
java
java网站下载jdk8
。记住是jdk8不是jdk9。截至到写文章的时候,我还没搞懂为什么装jdk9的话,在跑scala时候不工作。打开windows的控制台,测试java,我的显示是这样。
C:\Users\winwin>java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
C:\Users\winwin>javac -version
'javac' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
虽然javac出不来,但是后来一直可以跑程序,也没报错。不打算处理了
Scala
打开scala网站,点Download
。可以看到有两种,一种命令行版,一种IDE版,我本来打算用命令行版的,但是发现我能力范围内的编辑器编scala都太费劲了,遂决定用IntelliJ

去下载InetlliJ,有社区版的,如果有edu邮箱的话可以申请学生免费。
跟着向导安装,有一页问你是否要装一些插件,里面有scala,记得勾上。
目前为止,你应该有
- 一个可以用的jdk8
- 一个安装了scala插件的IntelliJ
Spark
说是安装,其实可以直接吧spark理解为一个scala库。在新建项目的时候声明下依赖就可以,IDE会帮你自动下载的。
新建一个scala项目,右面选sbt。sbt全称是scala build tool。下一步

这里选各种库的版本。截图里JDK是1.8,但是默认应该是空的,可以在右面New里面选你的jdk安装文件夹。sbt用新的。Spark2.2+用的是Scala2.11,没试过2.12行不行,我选的2.11,有兴趣的话你可以试试看。具体的版本选择可以参考Spark网站,需要保证JDK、Scala、Spark版本相对应。

完成后目录应该是这样的。

先别看底下的dump巴拉巴拉。打开build.sbt
,添加一句话,告诉IDE你要用Spark了
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.2.1"
保存。然后等着IDE下载Spark

这时候你可以出去吃个饭/看个电影/出去陪女票逛个街之类的
等下载好了之后你会看到一堆External Libraries
Hello World
在project/src/main/scala
下新建一个Scala Class
,内容如下
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by Jan on 2016/12/19.
*/
object Helloworld {
def main(args: Array[String]) {
if(args.length!=2) {
println("error : too few arguments")
sys.exit(1)
}
val conf = new SparkConf().setAppName("Simple Application").setMaster("local")
val filePath = args(0)
val sc = new SparkContext(conf)
val file = sc.textFile(filePath, 2).cache()
val counts = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
counts.saveAsTextFile(args(1))
}
}
在project/
新建一个word.txt
内容如下
apple banana
banana banana
右上角点击下拉菜单,编辑设置

设定启动参数,在参数里写上word.txt counts.txt

运行程序

会出现这个报错,因为windows上运行hadoop的问题(具体我也没看是什么情况)

去Hadoop网站下载Hadoop,放在
C:\hadoop-2.7.5\
下(我的版本是2.7.5,你的可能不一样)添加
C:\hadoop-2.7.5\
到环境变量,叫做HADOOP_HOME
。再添加C:\hadoop-2.7.5\bin
到PATH
。下载
winutils.exe
,地址1,地址2。放到C:\hadoop-2.7.5\bin
。再次运行程序。

多出了一个
conuts.txt
文件夹,里面的part-000000
和part-000001
就是结果。
//part-000000
(apple,1)
//part-000001
(banana,3)
安装完成
睡觉去,希望哪里有错误的话随时评论,我会尽快修改的。
参考
- http://www.cnblogs.com/yongjian/p/6211007.html
- 学长给我的pdf,原谅我不知道这pdf谁写的
网友评论