spark在Windows10当中部署搭建Scala的使用环境Maven

在Windows10中搭建部署Scala编写spark的使用环境

在Scala中编写spark的程序,需要安装好Java、spark、hadoop、Scala这些环境才可以,spark、hadoop都是依赖Java的,spark的开发语言是Scala,支持用Java、Scala、python这些语言来编写spark程序,本文讲述配置Scala语言编写spark代码的过程,文中的Java版本是Java SE 1.8,spark版本是2.3.1,Scala版本用的是插件。为了方便编写和调试,这里安装的IDE是IntelliJ IDEA Community Edition。Scala编写spark程序有几种方式,一种是使用SBT环境,另一种是使用Maven环境,这里讲的是使用Maven环境。

这里安装Java、spark、hadoop和另一篇文章是相同的步骤spark2.3在Windows10当中来搭建python3的使用环境pyspark


  • 首先需要安装Java

到官网下载并安装Java Standard Edition即Java SE1.8.本,这里下载的是window64位版本JDK,点击打开链接


设置环境变量

安装过程中按照默认配置就好,安装好以后,配置Java的环境变量,右键我的电脑,依次点击属性-高级系统设置-环境变量

新建用户变量: JAVA_HOME;C:\Program Files\Java\jdk1.8.0_171


在系统变量中找到Path,点击按钮新建,然后添加文字%JAVA_HOME%\bin,最后按回车Enter,一直点击确定,就保存了更改,这样就将bin文件夹中的Java程序放到了系统变量中。


检查Java环境变量配置是否成功,使用快捷键Ctrl+R打开命令行,输入cmd打开命令行工具,输入java -version

当出现图中所示时Java安装配置完成



  • 下载安装并配置Spark

从官方网站Download Apache Spark™下载相应版本的spark,因为spark是基于hadoop的,需要下载对应版本的hadoop才行,这个页面有对hadoop的版本要求,点击Download Spark: spark-2.3.1-bin-hadoop2.7.tgz就可以下载压缩包了,对应的hadoop版本要在Hadoop2.7及其以后。

这里解压到D:\spark-2.3.1-bin-hadoop2.7,为了后续操作简便,这里将解压以后的文件夹名称改为spark,这样解压的路径就是D:\spark

配置环境变量

右键我的电脑,依次点击属性-高级系统设置-环境变量

新建用户变量 SPARK_HOME    D:\spark


找到系统变量Path  点击按钮新建,然后添加文本%SPARK_HOME%\bin,按回车enter,继续新建一个,添加文本%SPARK_HOME%\sbin,按键回车,一直点击确定,就保存了更改,这样就将bin、sbin文件夹中的程序放到了系统变量中


pyspark:到这里spark的配置完成了一部分,还有pyspark需要配置,pyspark等anaconda安装后在下文中讨论,pyspark的安装有几种方式,其中解压以后的spark文件夹中就有pyspark库,可以安装到python的库当中去;还可以不复制,pyspark可以通过pip单独安装,还有一种是单独下载pyspark的安装包,解压以后安装到python库当中去。


  • 安装并配置Hadoop

上面安装spark的时候有对hadoop的版本要求,这里要求的是2.7及以后的版本,进入官方网站Apache Hadoop Releases下载2.7.6 binary版本,其中source版本是该版本hadoop的源代码,下载以后解压到D:\hadoop-2.7.6,为了后续操作方便,解压以后修改文件夹名称为hadoop,这样文件夹就是D:\hadoop


配置环境变量:

右键我的电脑,依次点击属性-高级系统设置-环境变量

新增用户变量 HADOOP_HOME D:\hadoop


然后找到系统变量Path  点击按钮新建,然后添加文本%HADOOP%\bin,按回车enter,继续新建一个,添加文本%HADOOP%\sbin,按键回车,一直点击确定,就保存了更改,这样就将bin、sbin文件夹中的程序放到了系统变量中


从网站中下载点击打开链接一个压缩包,然后解压出来,复制其中的winutils.exe和winutils.pdb到hadoop的安装文件夹中,复制目录为:D:\hadoop\bin,复制到这个目录中

当输入命令pyspark出现以下结果时表明spark安装配置完成了


  • 安装配置IntelliJ IDEA Community Edition

进入官方网站Download IntelliJ IDEA:The Java IDE,下载社区版的,按照默认配置安装就好,如果是32位的电脑,就勾选32位,64位的勾选64位。打开以后安装插件Scala,这里没有安装的话,需要等进入界面以后再安装。这里是使用Maven来构建相应的Scala编写环境


下一步点击Configure里面的settings


点击插件Plugins,输入Scala搜索插件,点击右侧的install安装,之前已经安装了,就可以不点击,之后需要安装什么插件,都可以通过File-Default Settings-Plugins来查找安装


修改字体这些在Settings-Editor-Font当中


修改编码为utf-8



新建一个项目点击Create New Project


然后需要配置Java的环境,依次点击Maven-New...,然后进入Java的安装目录C:\Program Files\Java,选择jdk1.8.0_171以后,点击OK,然后点击Next


填入相应信息


选择好项目所在的位置然后点击OK


这里需要注意的是,必须点击Enable Auto-Import,没有这个弹窗的话,需要自己点击最右下角的气泡标志,然后点击Enable Auto-Import

   


配置包和编译器Project Structure

点击File-Project Structure,也可以右键项目点击Open Module Settings进入,Project中的SDK要是选中的Java版本

     

点击Libraries,然后点击+号,点击下拉链的Kotlin/JS,进入spark的安装目录D:\spark\jars中,选中jars目录中的所有jar包,可以先点击第一个,然后按住shift键,拖动下拉链,点击最后一个jar包,这样就全都选中了,然后一直点击OK,等待配置完成。

 

配置好以后显示这个


接着依次点击Global Libraries-Scala SDK


然后选择Maven,一直点击OK

右键新加入的SDK,点击Copy to Project Libraries



创建WordCount文件夹,并作为Sources Root

然后在项目中右键src,依次点击New-Directory,新建一个目录命名为WordCount


右键新建立的目录,依次点击Make Directory as-Sources Root,就可以在这个目录中编辑源文件,设置好这一步以后,WordCount目录的颜色会变为蓝色。



新建配置文件和Scala代码

右键WordCount文件夹,新建一个Scala class


类型要选择Object类型的才可以


然后点击右侧的Setup JDK点击OK就行


进入pom.xml的编辑状态,粘贴以下代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>dblab</groupId>
<artifactId>WordCount</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <spark.version>2.3.1</spark.version>
    <scala.version>2.11.8</scala.version>
</properties>


<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_${scala.version}</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_${scala.version}</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_${scala.version}</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_${scala.version}</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-mllib_${scala.version}</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.ansj</groupId>
        <artifactId>ansj_seg</artifactId>
        <version>5.1.6</version>
    </dependency>

</dependencies>

<build>
    <plugins>

        <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <version>2.15.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>

    </plugins>
</build>

</project>

黏贴好后,右键点击工程文件夹,更新一下文件,按下图操作,点击Generate Sources and Update Folders


等待配置完成,右下角会有进度条显示,可以点击查看具体情况,如果有起泡标志,必须点击蓝色字体Enable Auto-Import

安装ansj中文分词库:

在项目官网中https://github.com/NLPchina/ansj_seg下载最新版ansj_seg-5.1.6.jar,在网站下载最新版nlp-lang-1.7.7.jar,jar包都放在项目的目录中D:\IdeaProjects


然后添加jar包到项目当中来,点击File-Project Structure,也可以右键项目点击Open Module Settings进入,点击Libraries,然后点击右边的+号,点击Kotlin/JS,进入项目目录,选中两个jar包,点击OK,然后点击JS file,最后一直点击OK,将jar包都导入进来。

           

编写Scala代码并运行:

import org.apache.spark.{SparkContext,SparkConf}
import org.apache.spark.rdd.RDD
import scala.io.Source
import org.ansj.library.DicLibrary
import org.ansj.recognition.impl.StopRecognition
import org.nlpcn.commons.lang.tire.library
import org.ansj.splitWord.analysis.ToAnalysis
object WordCount {
  val False: Boolean = False
  def main(args: Array[String]) {
    System.setProperty("spark.ui.showConsoleProgress", "False")
    //----添加自定义词典----
    //    val dicfile = raw"/xxx/xxx/ExtendDic" //ExtendDic为一个文本文件的名字,里面每一行存放一个词
    //    for (word <- Source.fromFile(dicfile).getLines) { DicLibrary.insert(DicLibrary.DEFAULT,word)} //逐行读入文本文件,将其添加到自定义词典中
    DicLibrary.insert(DicLibrary.DEFAULT, "小王子")
    val filter = new StopRecognition()
    filter.insertStopNatures("w") //过滤掉标点
    val file = Source.fromFile (raw"D:\中文停用词库.txt")
    for(x<- file.getLines()){
      filter.insertStopWords(x.toString())
    }
    // ----构建spark对象----
    val conf = new SparkConf().setAppName("TextClassificationDemo").setMaster("local[2]")
    val sc = new SparkContext(conf)
    //----读入要分词的文件----
    val filename = raw"d:\WordCount.txt"
    val TXTFile = sc.textFile(filename) // 用sc读入文件,此时文件的数据是RDD结构,注意textFile只能读UTF-8编码
    val splited = TXTFile.map(x => ToAnalysis.parse(x).recognition(filter).toStringWithOutNature(" "))
    val wordCount = splited.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).map(x => (x._2, x._1)).sortByKey(ascending = False)
    val choose=wordCount.take(100)
    choose.foreach(println)
  }
}
使用Ctrl+Shift+F10快捷键run代码,可以得到输出结果:
(419,小王子)
(361,说)
(219,一个)
(202,没有)
(194,我的)
(134,说道)
(124,星星)
(118,会)
(118,花)
(114,画)
(104,星球)
(84,羊)
(80,地方)
(78,国王)
(73,中)
(72,你的)
(72,狐狸)
(68,知道)
(68,象)
(67,想)
(65,回答)
(63,一只)
(62,真)
(60,非常)
参考内容:
ansj分词史上最详细教程
https://github.com/NLPchina/ansj_seg
利用开发工具IntelliJ IDEA编写Spark应用程序(Scala+Maven)
spark应用开发-开发工具篇
学习大数据的第一步-搭建Scala开发环境,以及使用Intellij IDEA开发Scala程序

IntelliJ IDEA 配置maven

猜你喜欢

转载自blog.csdn.net/shiheyingzhe/article/details/80721752
今日推荐