不少大数据开发的小伙伴们,在刚开始的学习过程中一定会被大数据环境的搭建干扰到,各种集群环境。笔者也是深有体会,尤其是电脑配置低,甚至安装虚拟机都吃力,对于屌丝们,使用的大部分是windows系统。因此,本期主要介绍windows下,spark环境的搭建和展示idea下的toy project——WordCount。
首先安装jdk,但是oracle官方默认让用户下载最新版的jdk,如果想使用之前的版本,比如jdk1.8,则需要进行注册,才可以下载,但是我们如果不想注册的话,可以在国内的华为源上来下载jdk版本(https://repo.huaweicloud.com/java/jdk/8u202-b08/)。之后,配置jdk环境变量(https://www.cnblogs.com/boringwind/p/8001300.html)。接下来安装scala,进入下载官网(https://www.scala-lang.org/download/all.html)选择版本进行下载即可,笔者用的是scala2.11.8版本。下载完成后,进行环境变量配置(https://blog.csdn.net/qq_37833810/article/details/88181127)。安装maven,maven的配置,参考(https://www.cnblogs.com/glzgc/articles/10431309.html),注意仓库的配置,笔者使用的maven3.6.3。接下来是重点,安装Hadoop和spark。
在windows系统本地安装spark环境,稍微有点复杂,参考这篇资料(https://www.jb51.net/article/163020.htm),便可完成配置,笔者亲测。配置好环境之后,在这里说明下笔者的软件版本:jdk1.8、scala2.11.8、maven3.6.3、hadoop-2.7.1、spark-bin-hadoop2.4.5。开始在idea新建项目,参考博客(https://blog.csdn.net/haijiege/article/details/80775792?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param),注意,一定要在idea中配置好自己安装好的maven的路径。如图:
笔者的本地安装目录:
在pom.xml下,添加如下依赖
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>2.4.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 该插件用于将Scala代码编译成class文件 -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<!-- 声明绑定到maven的compile阶段 -->
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在maven下刷新:
在项目下创建input目录,目录下创建文件word.txt
在文件下输入内容即可,在创建的scala目录下的wordCount编写代码
代码如下:
package com.bigdata
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object wordCount {
def main(args: Array[String]): Unit = {
// 创建Spark运行配置对象
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
// 创建Spark上下文环境对象(连接对象)
val sc : SparkContext = new SparkContext(sparkConf)
// 读取文件数据
val fileRDD: RDD[String] = sc.textFile("input/word.txt")
// 将文件中的数据进行分词
val wordRDD: RDD[String] = fileRDD.flatMap( _.split(" ") )
// 转换数据结构 word => (word, 1)
val word2OneRDD: RDD[(String, Int)] = wordRDD.map((_,1))
// 将转换结构后的数据按照相同的单词进行分组聚合
val word2CountRDD: RDD[(String, Int)] = word2OneRDD.reduceByKey(_+_)
// 将数据聚合结果采集到内存中
val word2Count: Array[(String, Int)] = word2CountRDD.collect()
// 打印结果
word2Count.foreach(println)
//关闭Spark连接
sc.stop()
}
}
运行即可。