文档章节

scala IDE for Eclipse开发Spark程序

四叶草666
 四叶草666
发布于 2017/07/19 10:03
字数 1733
阅读 39
收藏 1
点赞 0
评论 0

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. Hello Hadoop
  2. Hello BigData
  3. Hello Spark
  4. Hello Flume
  5. Hello Kafka

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.  
  5. object LocalWordCount {
  6. def main(args: Array[String]){
  7. /**
  8. * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
  9. * 例如说通过setMaster来设置程序要连接的Spark集群的Master的URL,
  10. * 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差
  11. * (例如只有1G的内存)的初学者
  12. */
  13. val conf =new SparkConf()//创建SparkConf对象,由于全局只有一个SparkConf所以不需要工厂方法
  14. conf.setAppName("wow,my first spark app")//设置应用程序的名称,在程序的监控界面可以看得到名称
  15. conf.setMaster("local")//此时程序在本地运行,不需要安装Spark集群
  16. /**
  17. * 第二步:创建SparkContext对象
  18. * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须要有一个
  19. * SparkContext
  20. * SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler,TaskScheduler,SchedulerBacked,
  21. * 同时还会负责Spark程序往Master注册程序等
  22. * SparkContext是整个Spark应用程序中最为至关重要的一个对象
  23. */
  24. val sc=new SparkContext(conf)//创建SpackContext对象,通过传入SparkConf实例来定制Spark运行的具体参数的配置信息
  25. /**
  26. * 第三步:根据具体的数据来源(HDFS,HBase,Local,FileSystem,DB,S3)通过SparkContext来创建RDD
  27. * RDD的创建基本有三种方式,(1)根据外部的数据来源(例如HDFS)(2)根据Scala集合(3)由其它的RDD操作
  28. * 数据会被RDD划分为成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
  29. */
  30. //读取本地文件并设置为一个Partition
  31. val lines=sc.textFile("words.txt", 1)//第一个参数为为本地文件路径,第二个参数minPartitions为最小并行度,这里设为1
  32. //类型推断 ,也可以写下面方式
  33. // val lines : RDD[String] =sc.textFile("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.foreach(wordNumberPair => println(wordNumberPair._1 + ":" +wordNumberPair._2))
  52. //释放资源
  53. sc.stop()
  54. }
  55. }

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

集群模式要运行在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

集群模式运行成功!

© 著作权归作者所有

共有 人打赏支持
四叶草666
粉丝 0
博文 51
码字总数 50778
作品 0
深圳
程序员
Spark基本工作原理与RDD及wordcount程序实例和原理深度剖析

RDD以及其特点 1、RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集。 2、RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每...

qq1137623160
05/10
0
0
Windows + IDEA + SBT 打造Spark源码阅读环境

http://guozhongxin.com/pages/2014/10/15/sparksourcecode.html Spark源码阅读环境的准备 Spark源码是有Scala语言写成的,目前,IDEA对Scala的支持要比eclipse要好,大多数人会选在在IDEA上...

chenhao_asd
04/25
0
0
Scala-Spark环境搭建配置

开始搭建的jdk这些自不必说,本文只是简单的介绍安装scala/spark 1.下载scala安装包 去官网下载tgz包,解压在/opt/scala/下,设置环境变量: export SCALA_HOME=/opt/scala/scala-2.10.3exp...

hanzhankang
2014/02/28
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第四步)(7)

第四步:通过Spark的IDE搭建并测试Spark开发环境 Step 1:导入Spark-hadoop对应的包,次选择“File”–> “Project Structure” –> “Libraries”,选择“+”,将spark-hadoop 对应的包导入...

Spark亚太研究院
2014/09/25
0
0
Spark安装启动 and 在程序中调用spark服务

1.软件准备 我的系统环境为ubuntu 13.10 1.scala-2.9.3.tgz http://www.scala-lang.org/files/archive/scala-2.9.3.tgz 由于spark是依赖scala2.9.3开发的,所以只能安装2.9.3,我试的时候一开...

zachary124
2014/01/25
0
9
教你如何成为Spark大数据高手

Spark目前被越来越多的企业使用,和Hadoop一样,Spark也是以作业的形式向集群提交任务,那么如何成为Spark大数据高手?下面就来个深度教程。 分享之前我还是要推荐下我自己创建的大数据学习交...

风火数据
05/20
0
0
Spark笔记:RDD基本操作(上)

本文主要是讲解spark里RDD的基础操作。RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD...

jingyang07
05/07
0
0
Spark 学习资源收集【Updating】

(一)spark 相关安装部署、开发环境 1、Spark 伪分布式 & 全分布式 安装指南 http://my.oschina.net/leejun2005/blog/394928 2、Apache Spark探秘:三种分布式部署方式比较 http://dongxic...

大数据之路
2014/09/08
0
1
win10 spark+scala+eclipse+sbt 安装配置

转载请务必注明原创地址为:https://dongkelun.com/2018/03/15/winSparkConf/ 1、首先安装配置jdk1.8以上,建议全部的安装路径不要有空格 2、安装spark 2.1 下载 下载地址:http://spark.apac...

董可伦
05/20
0
0
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机、平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题。图计算正在被广泛地...

Spark亚太研究院
2014/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
53分钟前
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部