DT大数据课程第一阶段第8讲高薪笔记和作业@王家林_DT大数据梦工厂

来源:互联网 发布:mac 照片和文稿 编辑:程序博客网 时间:2024/05/24 07:14
第一步:修改依赖的Scala版本为Scala 2.10.x
第二步:加入Spark 1.6.0的jar文件依赖
第三步:找到依赖的Spark Jar文件并导入到Eclipse中的Jar依赖
第四步:在src下建立Spark工程包
第五步:创建Scala入口类
第六步:把class变成object并编写main入口方法

//第一个统计单词程序
1.本地运行代码
package com.dt.spark

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

/**
 * 使用 Scala开发spark 本地测试程序
 * @author macal
 */
object WordCount {
 
  def main( args:Array[ String])
  {
    //第一步;创建spark的配置对象 sparkconf
   
    val conf = new SparkConf() //创建 sparkconf对象
    conf. setAppName( "my first spark") //设置应用程序的名称
    conf. setMaster( "local") //设置本地运行
   
    //创建sparkcontext对象, sparkcontext是程序的唯一入口
   
    val sc = new SparkContext( conf)
   
    //根据具体的数据源创建RDD,例如 hadoop 等
    val lines = sc. textFile( "D://tools//spark-1.4.1-bin-hadoop2.6//README.md" 1 )//都区本地文件,设置1个partition
 
    //对初始的RDD进行转换操作
    val words = lines. flatMap{ line => line. split( " ")}
   
    val pairs = words. map { word =>( word, 1) }
   
    val wordconuts = pairs. reduceByKey (_+ _)
   
    wordconuts. foreach( wordnumpair => println( wordnumpair ._1 + ":"+ wordnumpair ._2 ))
   
   
    sc. stop() //
  }
}
2.集群模式代码
package com.dt.spark

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

/**
* 使用Scala开发spark 本地测试程序
* @author macal
*/
object WordCount_cluster {
  
  def main(args:Array[String])
  {
    //第一步;创建spark的配置对象sparkconf
    
    val conf = new SparkConf()//创建sparkconf对象
    conf.setAppName("my first spark")//设置应用程序的名称
    //conf.setMaster("local")//设置本地运行
    //conf.setMaster("spark://master:7077")//设置
    
    //创建sparkcontext对象,sparkcontext是程序的唯一入口
    
    val sc = new SparkContext(conf)
    
    //根据具体的数据源创建RDD,例如 hadoop 等
    val lines = sc.textFile("/data/putfile.txt")//读取hadoop文件 
    
   
  
    //对初始的RDD进行转换操作
    val words = lines.flatMap{line =>line.split(" ")}
    
    val pairs = words.map { word =>(word,1) }
    
    val wordconuts = pairs.reduceByKey(_+_)
    
    wordconuts.collect.foreach(wordnumpair => println(wordnumpair._1+":"+wordnumpair._2))
    
    
    sc.stop()//停止
  }
}

//及提交命令
./spark-submit --class com.dt.spark.WordCount_cluster --master spark://master:7077 /data/WordCount.jar

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

package com.dt.spark

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf

/**
 * @macalzheng
 * 本地测试广告排名
 * 新浪微博:macalzheng_DT大数据梦工厂,
 */
object Rank {
 
  def main( args:Array[ String])
  {
    /**
     * 初始化spark环境配置,
     */
    val conf = new SparkConf()
    conf. setAppName( "Rank Program")
    conf. setMaster( "local")
    /**
     * 初始化 sparkcontext,
     */
    val sc = new SparkContext( conf)
    //读取数据
    val lines = sc. textFile( "D://tools//spark-1.4.1-bin-hadoop2.6//README.md" 1 )
  
    val words = lines. flatMapline => line. split( " ")}

    val paris = words. mapword => ( word, 1)}
   
    val wordcount = paris. reduceByKey (_+ _)
    //将key和value翻转一下
    val paristemp = wordcount .map {word => (word ._2 ,word ._1 )}
    //按照value值排序
    val sortrank = paristemp.sortByKey(). collect(). reverse
    //再次将key和value翻转过来
    val sortranktemp = sortrank. map{ word => ( word. _2, word. _1)}
    //输出
    sortranktemp. foreach( ranks => println( ranks))
   
  }
}

0 0