DT_大数据梦工厂 第8课 彻底实战详解使用IDE开发Spark程序

2016/1/9 课堂笔录

Scala开发IDE:IDEA和Eclipse

开发系统:一般推荐Windows7 64位。

Eclipse开发
    
开发第一个Scala程序
第一步:修改依赖的Scala版本为Scala 2.10.x
               Scala Library container: 2.10.6
第二步:加入Spark 1.6.0的jar文件依赖
JRE System Library: JavaSE-1.8开发

第三步:找到依赖的Spark Jar文件并导入到Eclipse中的Jar依赖;
第四步:在src下建立Spark工程包 com.dt.spark
              
第五步:创建Scala入口类

第六步:把class变成object并编写main入口方法
--
第1步:
创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
例如说通过setMaster来设置程序要链接的Spark集群的Master的URL,
如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置比较差的初学者。
//创建SparkConf对象
val conf = new SparkConf()
//设置应用程序的名称,在程序运行的监控界面可以看到名称
conf.setAppName("Wow,My First Spark App!")
//此时,程序在本地运行 不需要安装Spark集群
conf.setMaster("local") 
//如果是集群时,通常不写conf.setMaseter方法,
//spark-submit 时指定参数,   --master spark://Master:7077 

第2步:SparkContext对象
SparkContext是Spark程序所有功能的唯一入口 ,无论 采用Scala,Java,Python,R等 必须要有一个SparkContext; 
SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件 ,包括DAGScheduler,TaskScheduler,SchedulerBackend,
同时还会负责Spark程序往Master注册 程序等。
SparkContext是整个Spark应 用程序中最为至关重要的一个对象。

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


第3步:根据具体的数据来源(HDFS,HBASE,Local FS,BS,S3等)
RDD的创建基本有三种方式:根据外部的数据来源(如HDFS)、根据Scala集合、由其它的RDD操作数据会被RDD划分成为一系列的Partitions, 分配到每个Partition的数据属于一个Task的处理范畴。

val lines = sc.textFile("D://Big_Data_Software//spark-1.6.0-bin-hadoop2.6//READ.md",1)

第4步:对初始的RDD进行Transformation级别的处理,
例如map、filter等高阶函数等的编程,来进行具体的数据计算。
第4.1步:讲每一行的字符串拆分成单个的单词
val words = lines.flatMap { line => line.split(" ")}

第4.2步:在单词拆分的基础上对每个单词实例计数为1,也就是word=>(word,1)
val pairs = words.map {world =>(word,1)}


第4.3步:在每个单词实例计数为1 基础之上统计每个单词在文件中出现的总次数
对相同的key,进行Value的累计(包括Local和Reducer级别同时Reduce)

val wordCounts = pairs.reduceByKey(_+_)
wordCounts .collect. foreach(wordNumberPair => println(wordNumberPair._1 + " : " + wordNumberPair._2))
sc.stop()

//第8课作业:在Eclipse中写好广告点击排名的程序并测试

写一个Shell,wordcount.sh
usr/local/spart/spark-1.6.0-bin-hadoop2.6/bin/ spark-submit --class com.dt.spark.WordCount_Cluster --master spark://Master:7077 /root/Documents/SparkApps/ WordCount.jar

执行shell时可能没权限出错。
chmod 777 wordcount.sh

附上王老师个人名片信息
王家林  中国Spark第一人
DT大数据梦工厂
新浪微博: http://weibo.com.ilovepains/
微信公共号:DT_Spark
博客:http://bolg.sina.com.cn/ilovepains
手机:18610086859
qq:1740415547
邮箱:[email protected]

你可能感兴趣的:(DT_大数据梦工厂 第8课 彻底实战详解使用IDE开发Spark程序)