纯手写一个spark应用程序:WordCount(Scala 代码实现)

在maven项目中的pom.xml配置文件中添加spark相应的组件


  <dependencies>
   <dependency>
     <groupId>org.apache.sparkgroupId>
     <artifactId>spark-mllib_2.11artifactId>
     <version>2.0.1version>
    dependency>
import org.apache.spark.{SparkConf,SparkContext}
object WordCount {
  def main(args:Array[String]){
    /* 
     * 第一步,创建spark的配置信息对象sparkconf,设置spark程序运行时的配置信息
     * setAppName用来设置应用程序的名称,在程序运行的监控界面上可以看到该应用程序的名称
     * setMaster,设置程序运行在本地还是运行在集群中,在本地可以使用local参数,或者local[k]参数
     * 如果运行在集群中,以standalone模式运行呢,需要使用spark://HOST:PORT
     * */
   val conf = new SparkConf();
   conf.setAppName("wordcount")
   conf.setMaster("local[2]");

   /* 第二步创建sc对象,sc是spark程序所有功能的唯一入口
    * sc核心作用:初始化spark应用程序的所有的组件,包括DAGSchedule TaskSchedule ScheduleBackend
    * 还会负责spark程序向master注册程序
    * */
   val sc = new SparkContext(conf);

   /* 第三步,根据具体的数据来源等信息,通过sparkContext来创建rdd
    * rdd的创建方式,外部来源,通过scala的集合然后产生rdd,通过rdd产生rdd
    * 
    * */
   val lines =sc.textFile("D:/test")

   /*第四步 用一些函数来进行计算*/
   val words = lines.flatMap(_.split(",")).flatMap(_.split(" ")).filter(word=>word!=" ")
   val pairs = words.map(word=>(word,1))
   val wordscount=pairs.reduceByKey(_+_)
   val result=wordscount.collect()
   result.foreach(println)
   sc.stop()
  }
}

我们的数据格式:
1,湖南有限公司1,1,走向 肉鸡 嗯嗯 哈哈
2,湖南有限公司2,1,走向 肉鸡 嗯嗯 哈哈
3,湖南有限公司3,1,走向 肉鸡 嗯嗯 哈哈
输出:
纯手写一个spark应用程序:WordCount(Scala 代码实现)_第1张图片

你可能感兴趣的:(纯手写一个spark应用程序:WordCount(Scala 代码实现))