Maven开拓条件搭建附测量检验,Scala境况计划

必赢365net手机版 28

主要包括以下三部分,本文为第一部分:
一. Scala环境准备
二. Hadoop集群(伪分布模式)安装
查看
三. Spark集群(standalone模式)安装
查看

前言:

  停滞了一段时间,现在要沉下心来学习点东西,出点货了。

  本文没有JavaJDK ScalaSDK和
IDEA的安装过程,网络上会有很多文章介绍这个内容,因此这里就不再赘述。

因Spark任务大多由Scala编写,因此,首先需要准备Scala环境。
注:楼主实验环境为mac os

一、在IDEA上安装Scala插件

首先打开IDEA,进入最初的窗口,选择Configure -——>Plugins

必赢365net手机版 1

然后会看到下面的窗口:

必赢365net手机版 2

此时我们选择‘Browse Repositories …’,然后输入Scala,

必赢365net手机版 3

找到下图这一项,点击“install”即可

必赢365net手机版 4

安装完成后,请重启IDEA。

Scala环境准备

  1. 下载JDK1.8并安装、配置环境变量(JAVA_HOME),建议使用1.8,与时俱进;
  2. 下载scala-sdk并解压到某个路径(如:~/tools/scala-2.12.6),为方便使用还可以设置一下SCALA_HOME,在终端输入~/tools/scala-2.12.6/bin/scala(未设置SCALA_HOME)或scala(前提设置了SCALA_HOME)可以验证scala的版本或进行交互实验(scala官网推荐的图书《Programming
    in Scala, 3rd
    ed》中的实例均为在此模式下运行,故学习scala阶段到这一步就够了)
    必赢365net手机版 5

  3. 下载IntelliJ
    IDEA(Ultimate”版即为免费版本)并安装,安装后安装Scala插件(plugin),如下图所示;
    打开plugin菜单:
    必赢365net手机版 6

搜索并安装scala插件
必赢365net手机版 7

  1. 写个小程序测试一下吧
    选择“Create New Project”
    必赢365net手机版 8

选择项目类型为“Scala”
必赢365net手机版 9

默认没有Scala SDK,通过以下方式添加:Create->Browse…
必赢365net手机版 10

找到SCALA_HOME
必赢365net手机版 11

完成配置
必赢365net手机版 12

为方便开发,将项目转换为maven项目以解决繁琐的依赖包问题,项目名右键–>Add
Framework Support…
必赢365net手机版 13

选择maven
必赢365net手机版 14

项目会自动引入pom.xml,变为scala maven project,并在src下创建source
root(可以在package上右键更改)
必赢365net手机版 15

source root(该项目中为main.java)上右键–>New–>Scala Class
必赢365net手机版 16

选择类型为Object,用以创建main函数
必赢365net手机版 17

编写测试代码
必赢365net手机版 18

在代码空白处或项目名处右键–>Run ‘ScalaTest’测试代码
必赢365net手机版 19

虽然引入了pom.xml,默认却不会自动import依赖包,出现提示选择“Auto-Import”
必赢365net手机版 20

测试结果
必赢365net手机版 21

之所以这一步这么详细是因为我发现创建项目的时候选择哪种project类型会很纠结,也没有官方标准,经过实验,推崇先创建scala
project再转换为maven project;如果创建的时候选择了maven
project,通过“Add Framework Support…”再引入Scala
SDK也是可以的,最终效果和图中给出的差不多,但是目录结构会有差异。

注1:SCALA_HOME、JAVA_HOME在mac下设置方式:
~/.bash_profile中添加如下指令:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
export SCALA_HOME=/Users/<你的名字>/tools/scala-2.12.6
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$PATH

参考文档:官方文档

二、创建一个Scala工程

依次点击Create New Project ——>Scala——>IDEA——>Next

必赢365net手机版 22

然后我们需要点击create,增加相应的SDK版本及位置。

必赢365net手机版 23

自己填写好其他信息后就可以,点击Finish了。

必赢365net手机版,三、添加Maven框架以及编写pom.xml

首先右键项目名然后选择Add Framework Support…

必赢365net手机版 24

然后找到maven打钩,点击Ok即可.

必赢365net手机版 25

接下来,编写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>com.sudy</groupId>    <artifactId>SparkStudy</artifactId>    <version>1.0-SNAPSHOT</version>      <properties>        <spark.version>2.2.0</spark.version>        <scala.version>2.11</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>    </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>                <configuration>                    <skip>true</skip>                </configuration>            </plugin>        </plugins>    </build></project>

四、添加winutils.exe文件

winutils.exe下载地址:

解压后,记住放入的路径就好。

五、使用local模式测试环境是否搭建成功?

右键java文件夹,依次点击New——>Scala Class

必赢365net手机版 26

然后选择Object,输入名称即可。

必赢365net手机版 27

写入测试代码:

必赢365net手机版 28

测试代码部分可以参照我之前写的一篇博客的后半部分:

分别使用Hadoop和Spark实现二次排序

为了大家方便这里复制出代码和测试文本:

import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.rdd.RDD.rddToOrderedRDDFunctionsimport org.apache.spark.rdd.RDD.rddToPairRDDFunctionsobject SecondarySort {  def main(args: Array[String]) {    System.setProperty("hadoop.home.dir", "D:\hadoop-common-2.2.0-bin-master")    val conf = new SparkConf().setAppName(" Secondary Sort ")      .setMaster("local")    var sc = new SparkContext    sc.setLogLevel("Warn")    //val file = sc.textFile("hdfs://localhost:9000/Spark/SecondarySort/Input/SecondarySort2.txt")    val file = sc.textFile("d:\TestData\SecondarySort.txt")    val rdd = file.map(line => line.split(","))      .map(x=>,x).groupByKey().sortByKey(false)      .map(x => (x._1._1+"-"+x._1._2,x._2.toList.sortWith(_>_)))    rdd.foreach(      x=>{        val buf = new StringBuilder()        for(a <- x._2){          buf.append          buf.append(",")        }        buf.deleteCharAt(buf.length()-1)        println(x._1+" "+buf.toString      })    sc.stop()  }}

测试文本如下:

2000,12,04,102000,11,01,202000,12,02,-202000,11,07,302000,11,24,-402012,12,21,302012,12,22,-202012,12,23,602012,12,24,702012,12,25,102013,01,23,902013,01,24,702013,01,20,-10

注意:

D:\hadoop-common-2.2.0-bin-master 是我解压后放入的路径。

d:\TestData\SecondarySort.txt 是测试数据的位置,用于程序的运行。


好了,这篇文章结束了,剩下就是你的动手操作了。

参考:

2017.10最新Spark、IDEA、Scala环境搭建

创建一个基于maven的spark项目所需要的pom.xml文件模板

java.io.IOException: Could not locate executable nullbinwinutils.exe in the Hadoop binaries

Leave a Comment.