大数据学习之windows下spark环境搭建

        不少大数据开发的小伙伴们,在刚开始的学习过程中一定会被大数据环境的搭建干扰到,各种集群环境。笔者也是深有体会,尤其是电脑配置低,甚至安装虚拟机都吃力,对于屌丝们,使用的大部分是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()
  }
}

运行即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSAIWQYB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值