前言:

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

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

一、在IDEA上安装Scala插件

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

然后会看到下面的窗口:

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

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

安装完成后,请重启IDEA。

二、创建一个Scala工程

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

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

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

三、添加Maven框架以及编写pom.xml

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

然后找到maven打钩,点击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>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下载地址:

https://codeload.github.com/srccodes/hadoop-common-2.2.0-bin/zip/master

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

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

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

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

写入测试代码:

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

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

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

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.rdd.RDD.rddToOrderedRDDFunctions
import org.apache.spark.rdd.RDD.rddToPairRDDFunctions object 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(conf)
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(0),x(1)),x(3))).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(a)
buf.append(",")
}
buf.deleteCharAt(buf.length()-1)
println(x._1+" "+buf.toString())
})
sc.stop()
}
}

测试文本如下:

2000,12,04,10
2000,11,01,20
2000,12,02,-20
2000,11,07,30
2000,11,24,-40
2012,12,21,30
2012,12,22,-20
2012,12,23,60
2012,12,24,70
2012,12,25,10
2013,01,23,90
2013,01,24,70
2013,01,20,-10

注意:

D:\\hadoop-common-2.2.0-bin-master 是我解压后放入的路径。
d:\\TestData\\SecondarySort.txt 是测试数据的位置,用于程序的运行。

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

参考:

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

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

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries

												

最新文章

  1. 【转】Java 项目UML反向工程转化工具
  2. HDU 2602(01背包)
  3. autolayout高度动态改变的一些体会
  4. iOS Core Animation学习总结(2)--实现自定义图层
  5. ftp不能上传解决办法
  6. js以json形式提交数据,后台接受
  7. PHP 错误处理
  8. android 源码编译 问题 列表
  9. [iOS]详解调整UIButton的title和image的位置
  10. RabbitMQ权限控制原理
  11. 干货型up主
  12. 聊聊Google DSM产品的发布
  13. VSCode 必装的 10 个高效开发插件 --转
  14. Python 构建工具 buildout 的介绍与使用
  15. Python基础-列表、元祖、字典、字符串
  16. 解疑网络监控卡壳 视觉体验400ms延时
  17. 团队作业——Alpha冲刺 6/12
  18. 一个web项目web.xml的配置中&lt;context-param&gt;配置作用
  19. node之body-parser的使用
  20. JTree 添加 , 删除, 修改

热门文章

  1. 使用CSS3实现表格隔行/隔列变色
  2. Python学习【第6篇】:Python之常用模块1
  3. 面向对象:classmethod、staticmethod、property
  4. zk strom 本地环境启动命令
  5. from __future__ import absolute_import的作用
  6. Problem 56
  7. Python 查看关键字
  8. PAT 1047. Student List for Course
  9. vim学习2-文档编辑
  10. libcloud代码研究(三)——bugs