Eclipse下开发Scala(DT大数据梦工厂)

本讲主要内容:环境安装、配置、本地模式、集群模式、自动化脚本、web状态监控

==========单机============

开发工具开发

下载最新版Scala For Eclipse

1、建立工程,修改scala编译版本

2、加入Spark1.6.0的jar文件依赖

下载 http://apache.opencas.org/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz

spark-assembly-1.6.0-hadoop2.6.0.jar


3、找到依赖的spark jar文件并导入到eclipse中的jar依赖中

4、src下建立spark工程包com.dt.spark

5、创建scala入口类

6、把class编程object,并编写main入口方法

找不到类crtl+shift+o

例子代码:

package com.dt.spark

import org.apache.spark.SparkConf

import org.apache.spark.SparkContext

/**

* 使用Scala开发本地测试的spark wordcount程序

* @author DT_大数据梦工厂

* 新浪微博:http://weibo.com/ilovepains

* */

object WordCount {

def main(args:Array[String]){

/**

* 1、创建Spark配置对象SparkConf,设置Spark程序的运行时的程序配置信息

* 例如:通过setMaster来设置程序要连接的Spark集群的url,

* 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差(例如只有1G的内存)的初学者

*/

val conf = new SparkConf()//创建SparkConf对象

conf.setAppName("My First Spark App!")//设置应用程序的名称,在程序运行的监控界面可以看到名称

conf.setMaster("local")//此时程序在本地运行,不需要安装Spark集群

/**

* 2、创建SparkContext对象

* SparkContext是Spark程序所有功能的唯一入口,无论采用Scala、Java、Python、R等都必须要

* SparkContext核心作用:初始化Spark应用程序所运行所需要的核心组件,包括DAGScheduler、TaskScheduler、SchedulerBackend

* 同时还会负责Spark程序往Master注册程序等

* SparkContext是整个Spark应用程序中最为至关重要的一个对象

*/

val sc = new SparkContext(conf)//通过创建SparkContext对象,通过传入SparkConf实例来定制Spark运行的具体参数和配置信息

/**

* 3、根据具体的数据来源(HDFS、HBase、Local FS、DB、S3等)通过SparkContext来创建RDD

* RDD创建基本有三种方式:根据外部的数据来源(例如HDFS),根据Scala集合、由其它的RDD操作

* 数据会被RDD划分成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴

*/

//sc.textFile(文件路径,最小并行度)

//val lines: RDD[String],通过类型推断得到lines是String类型的RDD

//val lines: RDD[String] = sc.textFile("F:/安装文件/操作系统/spark-1.6.0-bin-hadoop2.6/README.md", 1)

val lines = sc.textFile("F:/安装文件/操作系统/spark-1.6.0-bin-hadoop2.6/README.md", 1)

/**

* 4、对初始的RDD进行transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算

* 4.1、将每一行的字符串拆分成单个的单词

*/

val words = lines.flatMap { line => line.split(" ") }//对每一行的字符串进行单次拆分并把所有行的拆分结果通过flat合并成一个大的单次集合

/**

* 4.2、在单词拆分的基础上对每个单词实例计数为1,也就是word=>(word,1)

*/

val pairs = words.map { word => (word,1) }//其实编程了Tuple  (word,1)

/**

* 4.3、在每个单词实例计数为1的基础上统计每个单词在文件中出现的总次数

*/

val wordCounts = pairs.reduceByKey(_+_)//对相同的key,进行value的累加(包括local和Reducer级别同时reduce)

wordCounts.foreach(wordNumberPair=>println(wordNumberPair._1+":"+wordNumberPair._2))

/**

* 5、释放相关资源

*/

sc.stop()

}

}

我的结果不是老师的结果,暂时不管

另外里面开始报错了,一定会报错,这个错误是正确的,因为运行的时候要找Hadoop,没有找到,但是这不是程序错误,也不影响我们的任何功能

==========集群============

package com.dt.spark

import org.apache.spark.SparkConf

import org.apache.spark.SparkContext

/**

* 使用Scala开发集群测试的spark wordcount程序

* @author DT_大数据梦工厂

* 新浪微博:http://weibo.com/ilovepains

* */

object WordCount_Cluster {

def main(args:Array[String]){

/**

* 1、创建Spark配置对象SparkConf,设置Spark程序的运行时的程序配置信息

* 例如:通过setMaster来设置程序要连接的Spark集群的url,

* 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差(例如只有1G的内存)的初学者

*/

val conf = new SparkConf()//创建SparkConf对象

conf.setAppName("My First Spark App!")//设置应用程序的名称,在程序运行的监控界面可以看到名称

//conf.setMaster("spark://Master:7077")//此时必须要运行在Master:7077上,之后运行可手工配置

/**

* 2、创建SparkContext对象

* SparkContext是Spark程序所有功能的唯一入口,无论采用Scala、Java、Python、R等都必须要

* SparkContext核心作用:初始化Spark应用程序所运行所需要的核心组件,包括DAGScheduler、TaskScheduler、SchedulerBackend

* 同时还会负责Spark程序往Master注册程序等

* SparkContext是整个Spark应用程序中最为至关重要的一个对象

*/

val sc = new SparkContext(conf)//通过创建SparkContext对象,通过传入SparkConf实例来定制Spark运行的具体参数和配置信息

/**

* 3、根据具体的数据来源(HDFS、HBase、Local FS、DB、S3等)通过SparkContext来创建RDD

* RDD创建基本有三种方式:根据外部的数据来源(例如HDFS),根据Scala集合、由其它的RDD操作

* 数据会被RDD划分成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴

*/

//sc.textFile(文件路径,最小并行度)

//val lines: RDD[String],通过类型推断得到lines是String类型的RDD

//val lines = sc.textFile("/library/wordcount/input/Data", 1)//读取HDFS文件,并切分成不同的Partition

val lines = sc.textFile("/historyserverforSpark/README.md", 1)

/**

* 4、对初始的RDD进行transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算

* 4.1、将每一行的字符串拆分成单个的单词

*/

val words = lines.flatMap { line => line.split(" ") }//对每一行的字符串进行单次拆分并把所有行的拆分结果通过flat合并成一个大的单次集合

/**

* 4.2、在单词拆分的基础上对每个单词实例计数为1,也就是word=>(word,1)

*/

val pairs = words.map { word => (word,1) }//其实编程了Tuple  (word,1)

/**

* 4.3、在每个单词实例计数为1的基础上统计每个单词在文件中出现的总次数

*/

val wordCounts = pairs.reduceByKey(_+_)//对相同的key,进行value的累加(包括local和Reducer级别同时reduce)

//集群中wordCounts.collect

wordCounts.collect.foreach(wordNumberPair=>println(wordNumberPair._1+":"+wordNumberPair._2))

/**

* 5、释放相关资源

*/

sc.stop()

}

}

打包:jar

WordCount.jar

http://spark.apache.org/docs/latest/submitting-applications.html

./bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

./spark-submit --class com.dt.spark.WordCount_Cluster --master spark://Master:7077 /root/Documents/SparkApps/WordCount.jar

hadoop fs -put /usr/local/spark-1.6.0-bin-hadoop2.6/README.md hdfs://192.168.145.131:9000/historyserverforSpark/  可以上传文件 但是不能用??

作业:在eclipse中写好广告点击排名的程序并测试好

王家林老师名片:

中国Spark第一人

新浪微博:http://weibo.com/ilovepains

微信公众号:DT_Spark

博客:http://blog.sina.com.cn/ilovepains

手机:18610086859

QQ:1740415547

邮箱:[email protected]

时间: 2024-10-14 11:11:37

Eclipse下开发Scala(DT大数据梦工厂)的相关文章

SCALA DT大数据梦工厂 第79讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第79讲:Scala单例深入讲解及单例背后的链式表达式腾讯微云:http://url.cn/bZPNhv百度云盘:http://pan.baidu.com/s/1eQdIzPw360云盘:http://yunpan.cn/cdm9IH3BEwnEY 访问密码 e591本节王老师讲了scala的单例object Scalaclass Java1class JVM{def method1:this.t

DT大数据梦工厂-Scala学习笔记(1):Scala开发环境搭建和HelloWorld解析

一.scala是函数式编程和面向对象编程结合的语言,这两种编程的特点分别是什么? 答:函数式编程擅长数值的计算:面向对象编程特别适合于大型工程或项目的组织,以及团队的分工协作. 二.Scala的特点 Scala结构优雅.计算精致.富有表现力 三.scala的安装需要什么资源? Java,推荐安装Java8(Java7也可以) 支持scala 2.10.*以上(可以安装2.10.4,http://scala-lang.org/download) 四.设置环境变量(系统变量): (1)JAVA_HO

底层战详解使用Java开发Spark程序(DT大数据梦工厂)

Scala开发Spark很多,为什么还要用Java开发原因:1.一般Spark作为数据处理引擎,一般会跟IT其它系统配合,现在业界里面处于霸主地位的是Java,有利于团队的组建,易于移交:2.Scala学习角度讲,比Java难.找Scala的高手比Java难,项目的维护和二次开发比较困难:3.很多人员有Java的基础,确保对Scala不是很熟悉的人可以编写课程中的案例预测:2016年Spark取代Map Reduce,拯救HadoopHadoop+Spark = A winning combat

王家林亲授《DT大数据梦工厂》大数据实战视频 Scala 深入浅出实战经典 - 第71讲

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-71讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2 技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群 DT大数据梦工厂① :462923555 DT大数据梦工厂②:437123764 DT大数据梦工厂③

王家林亲授《DT大数据梦工厂》第84讲:Scala中List和ListBuffer设计实现思考

我一直觉得Scala里的List设计的很诡异,今天阅读了王家林老师的 <第84讲:Scala中List和ListBuffer设计实现思考 >, 然后我就豁然开朗了. Scala的List是immutable的,因此将其声明为var, 有了这个隐式转换,操作ResultSet就变简单了. =============================================================== 王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经

DT大数据梦工厂第7讲-Scala类属性

学习了王家林老师的scala类属性的视频讲座,总结如下: var变量有默认的类似于java的get和set方法,不需要显示的声明:val变量有默认get方法 package com.fish.scala /** * @author fish * @description life is short ,you need spark! * 大数据架构咨询,欢迎联系@qq 16616365 */ class ClassAttr { var name  = "yxg"             

DT大数据梦工厂免费实战大数据视频全集 分享

接触大数据有几年,以前一直都是对hadoop的使用.相比于日新月异的前端技术,我还是比较喜欢大数据--这个已经被热炒多年的课题,也相信从事大数据方面的技术研究是IT从业者的一条光明坦途. 2010年hadoop开始进入我的视野, 不断自学,使用,感谢hadoop国内还是有很多书籍.去年开始各大社区开始讨论spark,也开始学习scala语言,断断续续没有坚持,没多久也会忘掉.今年初看到了王老师的<Spark亚太研究院Spark公益大讲堂>视频,一些实时性需求在工作中出现让我不得不对比hadoo

DT大数据梦工厂 第77讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第77讲:模式匹配下的提取器动手构造实战百度云:http://pan.baidu.com/s/1dD10KFZ腾讯微云:http://url.cn/d8FtbN360云盘:http://yunpan.cn/cdZCgEx2kzytv 访问密码 3c53本节王老师讲了模式匹配下的提取器object :>{ def unapplay[A](list:List[A])={ Some(list.in

DT大数据梦工厂 第76讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第76讲:模式匹配下的赋值语句百度云:http://pan.baidu.com/s/1qWkPspm腾讯微云:http://url.cn/c2XO4B360云盘:http://yunpan.cn/cdKX92weEFGNd 访问密码 2990模式匹配用做赋值语句.用tuple中的元素来接收值val [email protected]=1000 a为b的别名,背后是用模式匹配完成的同时返回一个tup