spark 2.2.0学习笔记2之LocalWordCountDemo

本文介绍如何使用Spark 2.2.0的Local模式实现WordCount程序,包括配置SparkContext、读取文件、单词拆分、计数及结果保存等步骤。

spark 2.2.0学习笔记2之LocalWordCountDemo

Info

底层—-集群管理器

  • local
  • 独立调度器—-Spark自带/默认
  • Hadoop YARN
  • Apache Mesos

大致源码

  • org.apache.spark.SparkContext#createTaskScheduler
    • 根据master创建TaskScheduler与SchedulerBackend
    • 创建DAGScheduler
    • 启动_taskScheduler.start
    • 通知一系列监听器

Code

package spark30.basic

import org.apache.spark.SparkConf

/**
  * @description
  * @author zhangwu
  * @date 2017-11-06-21:21
  * @version 1.0.0
  */
object LocalWordCountDemo {
  def main(args: Array[String]) {
    val inputFile = "README.md"
    val outputFile = "./countWord"
    // 创建一个Scala版本的Spark Context
    val sc = SparkContextUtil.getSparkContext("wordCount")
    // 读取我们的输入数据
    val input = sc.textFile(inputFile)
    // 把它切分成一个个单词
    val words = input.flatMap(line => line.split(" "))
    // 转换为键值对并计数
    val counts = words.map(word => (word, 1)).reduceByKey { case (x, y) => x + y }
    // 将统计出来的单词总数存入一个文本文件,引发求值
    counts.saveAsTextFile(outputFile)
    sc.stop()
  }
}
package spark30.basic

import org.apache.spark.{SparkConf, SparkContext}

/**
  * ${Description}
  * SparkContext 工具类,以函数式编程的思维思考问题
  * 集群管理器
  *- local
  *- 独立调度器----Spark自带/默认
  *- Hadoop YARN
  *- Apache Mesos
  *
  * @author zhangwu
  * @date 2017-12-19-13:57
  * @version 1.0.0
  */


object SparkContextUtil {

  val master: String = "local"

  def getSparkContext(appName: String): SparkContext = {
    getSparkContext(appName, master)
  }

  def getSparkContext(appName: String
                      , master: String
                     ): SparkContext = {
    val conf = new SparkConf().setAppName(appName).setMaster(master)
    val sc = new SparkContext(conf)
    sc
  }

}

Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值