开发机器上安装jdk1.7.0_60和scala2.10.4,配置好相关环境变量。网上资料很多,安装过程忽略。此外,Eclipse使用Luna4.4.1,IDEA使用14.0.2版本。

1. Eclipse开发环境搭建

1.1. 安装scala插件

安装eclipse-scala-plugin插件,下载地址http://scala-ide.org/download/prev-stable.html

解压缩以后把plugins和features复制到eclipse目录,重启eclipse以后即可。

Window -> Open Perspective -> Other…,打开Scala,说明安装成功。

1.2. 创建maven工程

打开File -> New -> Other…,选择Maven Project:

点击Next,输入项目存放路径:

点击Next,选择org.scala-tools.archetypes:

点击Next,输入artifact相关信息:

点击Finish即可。默认创建好的工程目录结构如下:

修改pom.xml文件:

至此,一个默认的scala工程新建完成。

2. Spark开发环境搭建

2.1. 安装scala插件

开发机器使用的IDEA版本为IntelliJ IEDA 14.0.2。为了使IDEA支持scala开发,需要安装scala插件,如图:

插件安装完成后,IntelliJ IDEA会要求重启。

2.2. 创建maven工程

点击Create New Project,在Project SDK选择jdk安装目录(建议开发环境中的jdk版本与Spark集群上的jdk版本保持一致)。点击左侧的Maven,勾选Create from archetype,选择org.scala-tools.archetypes:scala-archetype-simple:

点击Next后,可根据需求自行填写GroupId,ArtifactId和Version(请保证之前已经安装maven)。点击Finish后,maven会自动生成pom.xml和下载依赖包。同1.2章节中eclipse下创建maven工程一样,需要修改pom.xml中scala版本。

至此,IDEA下的一个默认scala工程创建完毕。

3. WordCount示例程序

3.1. 修改pom文件

在pom文件中添加spark和hadoop相关依赖包:

  1. <!-- Spark -->
  2.  
  3. <dependency>
  4.  
  5. <groupId>org.apache.spark</groupId>
  6.  
  7. <artifactId>spark-core_2.10</artifactId>
  8.  
  9. <version>1.1.0</version>
  10.  
  11. </dependency>
  12.  
  13. <!-- Spark Steaming-->
  14.  
  15. <dependency>
  16.  
  17. <groupId>org.apache.spark</groupId>
  18.  
  19. <artifactId>spark-streaming_2.10</artifactId>
  20.  
  21. <version>1.1.0</version>
  22.  
  23. </dependency>
  24.  
  25. <!-- HDFS -->
  26.  
  27. <dependency>
  28.  
  29. <groupId>org.apache.hadoop</groupId>
  30.  
  31. <artifactId>hadoop-client</artifactId>
  32.  
  33. <version>2.6.0</version>
  34.  
  35. </dependency>

在<build></build>中使用maven-assembly-plugin插件,目的是package时把依赖jar也打包。

  1. <plugin>
  2.  
  3. <artifactId>maven-assembly-plugin</artifactId>
  4.  
  5. <version>2.5.5</version>
  6.  
  7. <configuration>
  8.  
  9. <appendAssemblyId>false</appendAssemblyId>
  10.  
  11. <descriptorRefs>
  12.  
  13. <descriptorRef>jar-with-dependencies</descriptorRef>
  14.  
  15. </descriptorRefs>
  16.  
  17. <archive>
  18.  
  19. <manifest>
  20.  
  21. <mainClass>com.ccb.WordCount</mainClass>
  22.  
  23. </manifest>
  24.  
  25. </archive>
  26.  
  27. </configuration>
  28.  
  29. <executions>
  30.  
  31. <execution>
  32.  
  33. <id>make-assembly</id>
  34.  
  35. <phase>package</phase>
  36.  
  37. <goals>
  38.  
  39. <goal>assembly</goal>
  40.  
  41. </goals>
  42.  
  43. </execution>
  44.  
  45. </executions>
  46.  
  47. </plugin>

3.2. WordCount示例

WordCount用来统计输入文件中所有单词出现的次数,代码参考:

  1. package com.ccb
  2.  
  3. import org.apache.spark.{ SparkConf, SparkContext }
  4.  
  5. import org.apache.spark.SparkContext._
  6.  
  7. /**
  8.  
  9. * 统计输入目录中所有单词出现的总次数
  10.  
  11. */
  12.  
  13. object WordCount {
  14.  
  15. def main(args: Array[String]) {
  16.  
  17. val dirIn = "hdfs://192.168.62.129:9000/user/vm/count_in"
  18.  
  19. val dirOut = "hdfs://192.168.62.129:9000/user/vm/count_out"
  20.  
  21. val conf = new SparkConf()
  22.  
  23. val sc = new SparkContext(conf)
  24.  
  25. val line = sc.textFile(dirIn)
  26.  
  27. val cnt = line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _) // 文件按空格拆分,统计单词次数
  28.  
  29. val sortedCnt = cnt.map(x => (x._2, x._1)).sortByKey(ascending = false).map(x => (x._2, x._1)) // 按出现次数由高到低排序
  30.  
  31. sortedCnt.collect().foreach(println) // 控制台输出
  32.  
  33. sortedCnt.saveAsTextFile(dirOut) // 写入文本文件
  34.  
  35. sc.stop()
  36.  
  37. }
  38.  
  39. }

3.3. 提交spark执行

使用maven pacakge打包得到sparktest-1.0-SNAPSHOT.jar,并提交到spark集群运行。

执行命令参考:

./spark-submit --name WordCountDemo --class com.ccb.WordCount sparktest-1.0-SNAPSHOT.jar

即可得到统计结果。

分别用Eclipse和IDEA搭建Scala+Spark开发环境的更多相关文章

  1. 【转】Eclipse和PyDev搭建完美Python开发环境(Ubuntu篇)

    原文网址:http://www.cnblogs.com/Realh/archive/2010/10/10/1847251.html 前两天在Windows下成功地搭好了一个Python开发环境,这次转 ...

  2. Eclipse和PyDev搭建完美Python开发环境(Windows篇)(转)

      摘要:本文讲解了用Eclipse和PyDev搭建Python的开发环境. 十一长假在家闲着没事儿,准备花点时间学习一下Python. 今儿花了一个下午搭建Python的开发环境,不禁感叹————开 ...

  3. 【Spark笔记】Windows10 本地搭建单机版Spark开发环境

    0x00 环境及软件 1.系统环境 OS:Windows10_x64 专业版 2.所需软件或工具 JDK1.8.0_131 spark-2.3.0-bin-hadoop2.7.tgz hadoop-2 ...

  4. 搭建eclipse+maven+scala-ide的scala web开发环境

    http://www.tuicool.com/articles/NBzAzy 江湖传闻,scala开发的最佳利器乃 JetBrains 的神作 IntelliJ IDEA ,外加构建工具sbt 是也. ...

  5. Windows下Eclipse+Scala+Spark开发环境搭建

    1.安装JDK及配置java环境变量 本文使用版本为jdk1.7.0_79,过程略 2.安装scala 本文使用版本为2.11.8,过程略 3.安装spark 本文使用版本为spark-2.0.1-b ...

  6. Eclipse和PyDev搭建完美Python开发环境(Windows篇)

    目录安装Pythonpython for eclipse插件安装配置PyDev插件测试 安装Python从网站上下载最新的版本,从http://python.org/download/下载.安装过程与 ...

  7. Eclipse和PyDev搭建完美Python开发环境 Windows篇

    1,安装Python Python是一个跨平台语言,Python从3.0的版本的语法很多不兼容2版本,官网找到最新的版本并下载:http://www.python.org, 因为之前的一个项目是2版本 ...

  8. eclipse+cygwin+cdt搭建c/c++开发环境

    Cygwin 是一个用于 Windows 的类 UNIX shell 环境. 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性:以及 Bash shell 的改写 ...

  9. Intellij IDEA使用Maven搭建spark开发环境(scala)

    如何一步一步地在Intellij IDEA使用Maven搭建spark开发环境,并基于scala编写简单的spark中wordcount实例. 1.准备工作 首先需要在你电脑上安装jdk和scala以 ...

随机推荐

  1. json_decode($json, true) true什么意思

    <?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}' ...

  2. COGS2259 异化多肽

    传送门 听说是多项式求逆的模板题,以后不怕没地方练多项式求逆啦哈哈…… …… 我们设使用一个氨基酸能组成质量为$n$的多肽数量这个数列为$\{a_n\}$,设它的生成函数为$A(x)$,显然有 \be ...

  3. vim使用方法----转载

    转载自:http://www.cnblogs.com/itech/archive/2009/04/17/1438439.html vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但 ...

  4. 微信jssdk 返回的 config invalid signature

    这几天一直在调试wxjssdk,按照api的需求,http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html ,先是根据a ...

  5. HTML 折行br

    HTML 折行 如果您希望在不产生一个新段落的情况下进行换行(新行),请使用 <br /> 标签: <p>This is<br />a para<br /&g ...

  6. BEM,SASS,LESS,bootstrap:如何有效地将这些方法,工具和框架聪明地整合?

    https://medium.com/@andersonorui_/bem-sass-and-bootstrap-9f89dc07d20f Bootstrap是一个“HTML,CSS和Javascri ...

  7. win+ R下的常见命令

    -------------------------电脑运行常见命令----------------------------- Windows+R输入cmd 运行net start mssqlserve ...

  8. C# 操作Excel 格式

    数字(Range.NumberFormatlocal 属性)常规:Range.NumberFormatlocal = "G/通用格式"数值:Range.NumberFormatlo ...

  9. Elasticsearch学习总结--原理篇

    一.概念 1.1 官方文档 以下总结自ElasticSearch的官方文档以及自己的一些实践,有兴趣的可以直接阅读官方文档: https://www.elastic.co/guide/en/elast ...

  10. ue-edit设置显示函数列表

    UltraEdit的函数列表竟然不显示函数,那这功能要它何用,应该如何才能让函数显示出来呢? 公司编程基本上都在UltraEdit中进行,俺刚来公司还不熟悉,今天装了个UltraEdit,可是看着别人 ...