1、开发环境准备

scala IDE for Eclipse:版本(4.6.1)

官网下载:http://scala-ide.org/download/sdk.html

百度云盘下载:链接:http://pan.baidu.com/s/1c2NAZdA 密码:au8t

scala-2.11.8.msi :

官网下载:http://www.scala-lang.org/download/2.11.8.html

百度云盘下载:链接:http://pan.baidu.com/s/1dEFlmcL 密码:u2fr

2、scala环境变量配置

配置path,配置SCALA_HOME/bin目录,如图:

在命令行窗口输入scala,如图:

安装成功!

3、安装scala IDE for Eclipse

直接默认安装即可。

4、新建一个scala project

新建一个TestSpark工程,如图:

这里的scala版本默认使用的是2.12.2,我们要scala的版本设置为2.11.8,

5、导入spark的所有jar包

spark-2.1.1-bin-hadoop2.7\jars :此处我使用spark版本是spark-2.1.1-bin-hadoop2.7。

spark版本跟你装在linux上的spark环境是一致的。

如图:

6、WordCount简单示例

6.1在TestSpark工程下新建一个words.txt文件

words.txt内容如下:


  1. HelloHadoop
  2. HelloBigData
  3. HelloSpark
  4. HelloFlume
  5. HelloKafka

6.2本地模式新建一个LocalWordCount.scala

右键New------>选择Scala Object:

本地模式,LocalWordCount.scala代码如下:


  1. import org.apache.spark.SparkConf
  2. import org.apache.spark.SparkContext
  3. import org.apache.spark.rdd.RDD
  4. objectLocalWordCount{
  5. def main(args:Array[String]){
  6. /**
  7. * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
  8. * 例如说通过setMaster来设置程序要连接的Spark集群的Master的URL,
  9. * 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差
  10. * (例如只有1G的内存)的初学者
  11. */
  12. val conf =newSparkConf()//创建SparkConf对象,由于全局只有一个SparkConf所以不需要工厂方法
  13. conf.setAppName("wow,my first spark app")//设置应用程序的名称,在程序的监控界面可以看得到名称
  14. conf.setMaster("local")//此时程序在本地运行,不需要安装Spark集群
  15. /**
  16. * 第二步:创建SparkContext对象
  17. * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须要有一个
  18. * SparkContext
  19. * SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler,TaskScheduler,SchedulerBacked,
  20. * 同时还会负责Spark程序往Master注册程序等
  21. * SparkContext是整个Spark应用程序中最为至关重要的一个对象
  22. */
  23. val sc=newSparkContext(conf)//创建SpackContext对象,通过传入SparkConf实例来定制Spark运行的具体参数的配置信息
  24. /**
  25. * 第三步:根据具体的数据来源(HDFS,HBase,Local,FileSystem,DB,S3)通过SparkContext来创建RDD
  26. * RDD的创建基本有三种方式,(1)根据外部的数据来源(例如HDFS)(2)根据Scala集合(3)由其它的RDD操作
  27. * 数据会被RDD划分为成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
  28. */
  29. //读取本地文件并设置为一个Partition
  30. val lines=sc.textFile("words.txt",1)//第一个参数为为本地文件路径,第二个参数minPartitions为最小并行度,这里设为1
  31. //类型推断 ,也可以写下面方式
  32. // val lines : RDD[String] =sc.textFile("words.txt", 1)
  33. /**
  34. * 第四步:对初始的RDD进行Transformation级别的处理,例如map,filter等高阶函数
  35. * 编程。来进行具体的数据计算
  36. * 第4.1步:将每一行的字符串拆分成单个的单词
  37. */
  38. //对每一行的字符串进行单词拆分并把所有行的结果通过flat合并成一个大的集合
  39. val words = lines.flatMap { line => line.split(" ")}
  40. /**
  41. * 第4.2步在单词拆分的基础上,对每个单词实例计数为1,也就是word=>(word,1)tuple
  42. */
  43. val pairs = words.map { word =>(word,1)}
  44. /**
  45. * 第4.3步在每个单词实例计数为1的基础之上统计每个单词在文中出现的总次数
  46. */
  47. //对相同的key进行value的累加(包括local和Reduce级别的同时Reduce)
  48. val wordCounts = pairs.reduceByKey(_+_)
  49. //打印结果
  50. wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 +":"+wordNumberPair._2))
  51. //释放资源
  52. sc.stop()
  53. }
  54. }

右键Run As----->Scala Application

运行结果如图:

6.3集群模式新建一个ClusterWordCount.scala

集群模式----ClusterWordCount.scala代码如下:


  1. import org.apache.spark.SparkConf
  2. import org.apache.spark.SparkContext
  3. import org.apache.spark.rdd.RDD
  4. objectClusterWordCount{
  5. def main(args:Array[String]){
  6. /**
  7. * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
  8. * 例如说通过setMaster来设置程序要连接的Spark集群的Master的URL,
  9. * 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差
  10. * (例如只有1G的内存)的初学者
  11. */
  12. val conf =newSparkConf()//创建SparkConf对象,由于全局只有一个SparkConf所以不需要工厂方法
  13. conf.setAppName("wow,my first spark app")//设置应用程序的名称,在程序的监控界面可以看得到名称
  14. //conf.setMaster("spark://192.168.168.200:7077")//此时程序在Spark集群
  15. /**
  16. * 第二步:创建SparkContext对象
  17. * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须要有一个
  18. * SparkContext
  19. * SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler,TaskScheduler,SchedulerBacked,
  20. * 同时还会负责Spark程序往Master注册程序等
  21. * SparkContext是整个Spark应用程序中最为至关重要的一个对象
  22. */
  23. val sc=newSparkContext(conf)//创建SpackContext对象,通过传入SparkConf实例来定制Spark运行的具体参数的配置信息
  24. /**
  25. * 第三步:根据具体的数据来源(HDFS,HBase,Local,FileSystem,DB,S3)通过SparkContext来创建RDD
  26. * RDD的创建基本有三种方式,(1)根据外部的数据来源(例如HDFS)(2)根据Scala集合(3)由其它的RDD操作
  27. * 数据会被RDD划分为成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
  28. */
  29. //读取HDFS文件并切分成不同的Partition
  30. val lines=sc.textFile("hdfs://192.168.168.200:9000/input/words.txt")
  31. //val lines=sc.textFile("/index.html")
  32. //类型推断 ,也可以写下面方式
  33. // val lines : RDD[String] =sc.textFile("hdfs://192.168.168.200:9000/input/words.txt", 1)
  34. /**
  35. * 第四步:对初始的RDD进行Transformation级别的处理,例如map,filter等高阶函数
  36. * 编程。来进行具体的数据计算
  37. * 第4.1步:将每一行的字符串拆分成单个的单词
  38. */
  39. //对每一行的字符串进行单词拆分并把所有行的结果通过flat合并成一个大的集合
  40. val words = lines.flatMap { line => line.split(" ")}
  41. /**
  42. * 第4.2步在单词拆分的基础上,对每个单词实例计数为1,也就是word=>(word,1)tuple
  43. */
  44. val pairs = words.map { word =>(word,1)}
  45. /**
  46. * 第4.3步在每个单词实例计数为1的基础之上统计每个单词在文中出现的总次数
  47. */
  48. //对相同的key进行value的累加(包括local和Reduce级别的同时Reduce)
  49. val wordCounts = pairs.reduceByKey(_+_)
  50. //打印结果
  51. wordCounts.collect.foreach(wordNumberPair => println(wordNumberPair._1 +":"+wordNumberPair._2))
  52. //释放资源
  53. sc.stop()
  54. }
  55. }

集群模式要运行在Spark集群环境下(Linux系统中)

打包 :右击、export、Java 、jar File

把TestSpark.jar包上传到spark集群服务器的 spark_home下的myApp下:

确保hdfs://192.168.168.200:9000/input/words.txt路径文件存在。

提交spark任务:

  1. cd /usr/local/spark/spark-2.1.1-bin-hadoop2.7
  2. bin/spark-submit --class"ClusterWordCount"--master local[4] myApp/TestSpark.jar

集群模式运行成功!

scala IDE for Eclipse开发Spark程序的更多相关文章

  1. 使用Scala IDE for Eclipse遇到build errors错误的解决办法

    在编写第一个Scala语言的Spark程序时,在Scala IDE for Eclipse中运行程序时出现“Project XXXX contains build errors, Continue l ...

  2. ubuntu下eclipse scala开发插件(Scala IDE for Eclipse)安装

    1. 环境介绍 系统:ubuntu16.04(不过和系统版本关系不大) elipse:Neon.1aRelease (4.6.1) 2. 插件介绍 Scala IDE for eclipse是elip ...

  3. CentOS6.5下如何正确下载、安装Intellij IDEA、Scala、Scala-intellij-bin插件、Scala IDE for Eclipse助推大数据开发(图文详解)

    不多说,直接上干货! 第一步:卸载CentOS中自带openjdk Centos 6.5下的OPENJDK卸载和SUN的JDK安装.环境变量配置   第二步:安装Intellij IDEA 若是3节点 ...

  4. Scala IDE for Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)

    包括: Scala IDE for Eclipse的下载  Scala IDE for Eclipse的安装 本地模式或集群模式 我们知道,对于开发而言,IDE是有很多个选择的版本.如我们大部分人经常 ...

  5. eclipse运行spark程序时日志颜色为黑色的解决办法

    自从开始学习spark计算框架以来,我们老师教的是local模式下用eclipse运行spark程序,然后我在运行spark程序时,发现控制台的日志颜色总是显示为黑色,哇,作为程序猿总有一种强迫症,发 ...

  6. windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法

    按此文章<Hadoop集群(第7期)_Eclipse开发环境设置>进行MapReduce开发环境搭建的过程中遇到一些问题,饶了一些弯路,解决办法记录在此: 文档目的: 记录windows环 ...

  7. Eclipse开发Android程序如何在手机上运行

    android开发不论是在真机上调试还是最终发布到真机上都非常简单,过程如下: 1.安装usb驱动 手机要能与电脑相连,当然要安驱动了.效果就是你插入手机,电脑显示驱动已识别.驱动安装的官方教程:ht ...

  8. Eclipse开发JavaWeb程序报Server Tomcat v7.0 at localhost was unable to start

    出处:http://www.javaweb1024.com/info/582.jspx 原因重现: Eclipse开发JavaWeb程序,启动Servers的Tomcat服务器,突然跳出弹出框,内容显 ...

  9. [b0007] windows 下 eclipse 开发 hdfs程序样例

    目的: 学习使用hdfs 的java命令操作 相关: 进化: [b0010] windows 下 eclipse 开发 hdfs程序样例 (二) [b0011] windows 下 eclipse 开 ...

随机推荐

  1. scrapy面试一

    1.动态加载又对及时性要求很高怎么处理? Selenium+Phantomjs 尽量不使用 sleep 而使用 WebDriverWait 2.分布式爬虫主要解决什么问题? (1)ip (2)带宽 ( ...

  2. python django 创建虚拟环境

    DRF---django-rest-framework: 1.通过一个案例简单回顾一下django, 一.前后端分离,不分离 不分离:前端页面的显示,都是由后端返回的,就是说后端处理了参数,数据库,之 ...

  3. 使用Chrome调试工具抢阿里云免费套餐

    活动地址如下: https://free.aliyun.com/ntms/free/experience/getTrial.html 首先打开地址,需要登录,登陆后看到如下页面: 选择个人免费套餐,这 ...

  4. 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)

    In this problem, we will define a graph called star graph, and the question is to find the minimum d ...

  5. 堆&栈

    Java内存分为两种:堆内存和栈内存. 一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间.堆内存用于存放由new创建的对象和 ...

  6. shapefile 转 geojson 文件类型

    http://mapshaper.org/ 从natural earth下载后,扔进去2个文件,就可以了.

  7. Linux 服务器配置、运行、不用敲命令(新手必备!) - 宝塔全攻略建站一条龙

    Linux 服务器配置.运行.不用敲命令 WordPress 建站攻略 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整 ...

  8. Codeforces Round #519

    题目链接:传送门   A. Elections (思维+暴力) 思路: 从最小的k开始枚举就好了- -. #include <bits/stdc++.h> using namespace ...

  9. c++——基本概念

    如何理解c/c++中的指针?每种编程语言都使用指针,但Java.c#等将指针隐藏,而c/c++将指针暴露给了用户(程序员)https://www.cnblogs.com/gxcdream/p/4805 ...

  10. java-多态中成员访问特点-父类引用指向子类对象

    多态前提: - 要有继承关系. - 要有方法重写. - 要有父类引用指向子类对象. 1.成员变量:编译看左边(父类),运行看左边(父类) 2.成员方法:编译看左边(父类),运行看右边(子类),动态绑定 ...