scala IDE for Eclipse开发Spark程序
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内容如下:
- HelloHadoop
- HelloBigData
- HelloSpark
- HelloFlume
- HelloKafka
6.2本地模式新建一个LocalWordCount.scala
右键New------>选择Scala Object:
本地模式,LocalWordCount.scala代码如下:
- import org.apache.spark.SparkConf
- import org.apache.spark.SparkContext
- import org.apache.spark.rdd.RDD
- objectLocalWordCount{
- def main(args:Array[String]){
- /**
- * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
- * 例如说通过setMaster来设置程序要连接的Spark集群的Master的URL,
- * 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差
- * (例如只有1G的内存)的初学者
- */
- val conf =newSparkConf()//创建SparkConf对象,由于全局只有一个SparkConf所以不需要工厂方法
- conf.setAppName("wow,my first spark app")//设置应用程序的名称,在程序的监控界面可以看得到名称
- conf.setMaster("local")//此时程序在本地运行,不需要安装Spark集群
- /**
- * 第二步:创建SparkContext对象
- * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须要有一个
- * SparkContext
- * SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler,TaskScheduler,SchedulerBacked,
- * 同时还会负责Spark程序往Master注册程序等
- * SparkContext是整个Spark应用程序中最为至关重要的一个对象
- */
- val sc=newSparkContext(conf)//创建SpackContext对象,通过传入SparkConf实例来定制Spark运行的具体参数的配置信息
- /**
- * 第三步:根据具体的数据来源(HDFS,HBase,Local,FileSystem,DB,S3)通过SparkContext来创建RDD
- * RDD的创建基本有三种方式,(1)根据外部的数据来源(例如HDFS)(2)根据Scala集合(3)由其它的RDD操作
- * 数据会被RDD划分为成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
- */
- //读取本地文件并设置为一个Partition
- val lines=sc.textFile("words.txt",1)//第一个参数为为本地文件路径,第二个参数minPartitions为最小并行度,这里设为1
- //类型推断 ,也可以写下面方式
- // val lines : RDD[String] =sc.textFile("words.txt", 1)
- /**
- * 第四步:对初始的RDD进行Transformation级别的处理,例如map,filter等高阶函数
- * 编程。来进行具体的数据计算
- * 第4.1步:将每一行的字符串拆分成单个的单词
- */
- //对每一行的字符串进行单词拆分并把所有行的结果通过flat合并成一个大的集合
- val words = lines.flatMap { line => line.split(" ")}
- /**
- * 第4.2步在单词拆分的基础上,对每个单词实例计数为1,也就是word=>(word,1)tuple
- */
- val pairs = words.map { word =>(word,1)}
- /**
- * 第4.3步在每个单词实例计数为1的基础之上统计每个单词在文中出现的总次数
- */
- //对相同的key进行value的累加(包括local和Reduce级别的同时Reduce)
- val wordCounts = pairs.reduceByKey(_+_)
- //打印结果
- wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 +":"+wordNumberPair._2))
- //释放资源
- sc.stop()
- }
- }
右键Run As----->Scala Application
运行结果如图:
6.3集群模式新建一个ClusterWordCount.scala
集群模式----ClusterWordCount.scala代码如下:
- import org.apache.spark.SparkConf
- import org.apache.spark.SparkContext
- import org.apache.spark.rdd.RDD
- objectClusterWordCount{
- def main(args:Array[String]){
- /**
- * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
- * 例如说通过setMaster来设置程序要连接的Spark集群的Master的URL,
- * 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差
- * (例如只有1G的内存)的初学者
- */
- val conf =newSparkConf()//创建SparkConf对象,由于全局只有一个SparkConf所以不需要工厂方法
- conf.setAppName("wow,my first spark app")//设置应用程序的名称,在程序的监控界面可以看得到名称
- //conf.setMaster("spark://192.168.168.200:7077")//此时程序在Spark集群
- /**
- * 第二步:创建SparkContext对象
- * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须要有一个
- * SparkContext
- * SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler,TaskScheduler,SchedulerBacked,
- * 同时还会负责Spark程序往Master注册程序等
- * SparkContext是整个Spark应用程序中最为至关重要的一个对象
- */
- val sc=newSparkContext(conf)//创建SpackContext对象,通过传入SparkConf实例来定制Spark运行的具体参数的配置信息
- /**
- * 第三步:根据具体的数据来源(HDFS,HBase,Local,FileSystem,DB,S3)通过SparkContext来创建RDD
- * RDD的创建基本有三种方式,(1)根据外部的数据来源(例如HDFS)(2)根据Scala集合(3)由其它的RDD操作
- * 数据会被RDD划分为成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
- */
- //读取HDFS文件并切分成不同的Partition
- val lines=sc.textFile("hdfs://192.168.168.200:9000/input/words.txt")
- //val lines=sc.textFile("/index.html")
- //类型推断 ,也可以写下面方式
- // val lines : RDD[String] =sc.textFile("hdfs://192.168.168.200:9000/input/words.txt", 1)
- /**
- * 第四步:对初始的RDD进行Transformation级别的处理,例如map,filter等高阶函数
- * 编程。来进行具体的数据计算
- * 第4.1步:将每一行的字符串拆分成单个的单词
- */
- //对每一行的字符串进行单词拆分并把所有行的结果通过flat合并成一个大的集合
- val words = lines.flatMap { line => line.split(" ")}
- /**
- * 第4.2步在单词拆分的基础上,对每个单词实例计数为1,也就是word=>(word,1)tuple
- */
- val pairs = words.map { word =>(word,1)}
- /**
- * 第4.3步在每个单词实例计数为1的基础之上统计每个单词在文中出现的总次数
- */
- //对相同的key进行value的累加(包括local和Reduce级别的同时Reduce)
- val wordCounts = pairs.reduceByKey(_+_)
- //打印结果
- wordCounts.collect.foreach(wordNumberPair => println(wordNumberPair._1 +":"+wordNumberPair._2))
- //释放资源
- sc.stop()
- }
- }
集群模式要运行在Spark集群环境下(Linux系统中)
打包 :右击、export、Java 、jar File
确保hdfs://192.168.168.200:9000/input/words.txt路径文件存在。
- cd /usr/local/spark/spark-2.1.1-bin-hadoop2.7
- bin/spark-submit --class"ClusterWordCount"--master local[4] myApp/TestSpark.jar
集群模式运行成功!
scala IDE for Eclipse开发Spark程序的更多相关文章
- 使用Scala IDE for Eclipse遇到build errors错误的解决办法
在编写第一个Scala语言的Spark程序时,在Scala IDE for Eclipse中运行程序时出现“Project XXXX contains build errors, Continue l ...
- ubuntu下eclipse scala开发插件(Scala IDE for Eclipse)安装
1. 环境介绍 系统:ubuntu16.04(不过和系统版本关系不大) elipse:Neon.1aRelease (4.6.1) 2. 插件介绍 Scala IDE for eclipse是elip ...
- CentOS6.5下如何正确下载、安装Intellij IDEA、Scala、Scala-intellij-bin插件、Scala IDE for Eclipse助推大数据开发(图文详解)
不多说,直接上干货! 第一步:卸载CentOS中自带openjdk Centos 6.5下的OPENJDK卸载和SUN的JDK安装.环境变量配置 第二步:安装Intellij IDEA 若是3节点 ...
- Scala IDE for Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)
包括: Scala IDE for Eclipse的下载 Scala IDE for Eclipse的安装 本地模式或集群模式 我们知道,对于开发而言,IDE是有很多个选择的版本.如我们大部分人经常 ...
- eclipse运行spark程序时日志颜色为黑色的解决办法
自从开始学习spark计算框架以来,我们老师教的是local模式下用eclipse运行spark程序,然后我在运行spark程序时,发现控制台的日志颜色总是显示为黑色,哇,作为程序猿总有一种强迫症,发 ...
- windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法
按此文章<Hadoop集群(第7期)_Eclipse开发环境设置>进行MapReduce开发环境搭建的过程中遇到一些问题,饶了一些弯路,解决办法记录在此: 文档目的: 记录windows环 ...
- Eclipse开发Android程序如何在手机上运行
android开发不论是在真机上调试还是最终发布到真机上都非常简单,过程如下: 1.安装usb驱动 手机要能与电脑相连,当然要安驱动了.效果就是你插入手机,电脑显示驱动已识别.驱动安装的官方教程:ht ...
- Eclipse开发JavaWeb程序报Server Tomcat v7.0 at localhost was unable to start
出处:http://www.javaweb1024.com/info/582.jspx 原因重现: Eclipse开发JavaWeb程序,启动Servers的Tomcat服务器,突然跳出弹出框,内容显 ...
- [b0007] windows 下 eclipse 开发 hdfs程序样例
目的: 学习使用hdfs 的java命令操作 相关: 进化: [b0010] windows 下 eclipse 开发 hdfs程序样例 (二) [b0011] windows 下 eclipse 开 ...
随机推荐
- mysql检查-优化-分析
Mysql分析.检查.优化表 l 分析表 对表进行分析(分析关键字的分布, 分析存储MyISAM等表中键的分布) MySQL中使用ANALYZE TABLE语句来分析表,该语句的基本语法如下: mys ...
- 5--Selenium环境准备--firefox与geckodriver
selenium2时打开firefox浏览器是不需要安装firefoxdriver的,但是selenium3不支持向前支持火狐浏览器了,40以后版本的火狐,运行会出现问题. 1.下载geckodriv ...
- iOS原生和React-Native之间的交互2
今天看下iOS原生->RN: 这里有个问题: * 我这里只能通过rn->ios->rn来是实现* 如果想直接ios-rn 那个iOS中的CalendarManager的self.br ...
- C# 曲线控件 曲线绘制 实时曲线 多曲线控件 开发
Prepare 本文将使用一个NuGet公开的组件来实现曲线的显示,包含了多种显示的模式和配置来满足各种不同的应用场景,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器 ...
- useradd密码无效
/********************************************************************** * useradd密码无效 * 说明: * 在测试Ubu ...
- Maxscale-在第一个节点的配置
[maxscale]threads=4 ##### Write Service, need to set address[server1]type=serveraddress=172.16.50.36 ...
- [LeetCode&Python] Problem 292. Nim Game
You are playing the following Nim Game with your friend: There is a heap of stones on the table, eac ...
- rest-framework之版本控制
rest-framework之版本控制 本文目录 一 作用 二 内置的版本控制类 三 局部使用 四 全局使用 五 示例 源码分析 回到目录 一 作用 用于版本的控制 回到目录 二 内置的版本控制类 f ...
- 聊聊 CAS
哥有故事,你有酒,长夜漫漫,听我给你说. 参考资源: https://blog.csdn.net/hsuxu/article/details/9467651 1.概述 CAS,compare and ...
- 系统限制和选项limit(一)
从shell中获取系统限制和选项 终端输入getconf value [pathname] [root@bogon code]# getconf ARG_MAX 2097152 [root@bogon ...