码迷,mamicode.com
首页 > 其他好文 > 详细

Spark3000门徒第9课IDEA中开发Spark实战总结

时间:2016-01-10 23:59:07      阅读:470      评论:0      收藏:0      [点我收藏+]

标签:

今晚听了王家林老师的第9课IDEA中开发Spark实战,课后作业是:在Idea中编写广告点击排名的程序并提交集群测试,

IDEA
社区版本就够用,Ultimate没必要还要钱

程序如下:

object WordCountCluster {
  def main(args: Array[String]){
    /**
     * 第一步:创建spark的配置对象SparkConf,设置Spark程序的运行时的配置信息
     * 
     */
    val conf = new SparkConf()  //创建SparkConf对象
    conf.setAppName("First App")    //设置应用程序名称
    
    val sc = new SparkContext(conf)  //通过传入SparkConf实例来定制Spark运行具体参数和配置信息来创建SparkContext对象
    
    /**
     * 通过具体数据来源来创建RDD
     * RDD创建三种方式:根据外部数据来源(hdfs),根据Scala集合(Range),由其他RDD操作产生
     */
    val lines = sc.textFile(args(0),1)   //读取一个hdfs文件
    
    /**
     * 第四部,对初始RDD进行Transformatation,例如map,filter等高阶函数编程,来进行具体计算
     * 4.1每一行字符拆分成单个的单词
     */
    
    val words = lines.flatMap{line => line.split(" ")}
    
    /**
     * 4.2 在单词拆分的基础上对每个单词实例计数为1,word => Tuple(word,1)
     */
    val pairs = words.map{ word => (word,1)}
    
    //4.3 统计每个单词在文件出现的总次数,对相同的key进行value的累加(包括local和reducer级别同时reduce)
    val wordCounts = pairs.reduceByKey(_+_).map(pair => (pair._2, pair._1)).sortByKey(false,1).map(pair => (pair._2, pair._1))
    
    wordCounts.collect.foreach(wordNumberPair => println(wordNumberPair._1 + ":" + wordNumberPair._2))
    
    sc.stop()
    
  }

打包成jar文件放服务器上执行:

/usr/lib/spark/bin/spark-submit --master  yarn-client  --class com.dt.spark.WordCountCluster --executor-memory 2G --executor-cores  4 ~/spark/wc.jar  ./mydir/tmp.txt

可以看到结果跟用scala IDE打包的jar一致。

 

后续课程可以参照新浪微博 王家林_DT大数据梦工厂:http://weibo.com/ilovepains

王家林  中国Spark第一人,微信公共号DT_Spark

Spark3000门徒第9课IDEA中开发Spark实战总结

标签:

原文地址:http://www.cnblogs.com/haitianS/p/5119752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!