sparkcore实现word count

25 篇文章 0 订阅
15 篇文章 2 订阅

spark core几种实现word count的方式(基于spark3.1.2和scala2.12.13):

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

object WordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[4]").setAppName("WordCount")
    val sc = new SparkContext(conf)
    val rdd = sc.makeRDD(Seq("Apache Spark lightning-fast unified analytics engine",
      "Apache Spark is a unified analytics engine for large-scale data processing"))
      .flatMap(_.split(" ")).map((_, 1))

    println("==========1. reduceByKey==========")
    val words = rdd.reduceByKey(_ + _)
    words.collect().foreach(println)

    val groupRDD = rdd.groupByKey().mapValues(_.sum)
    println("==========2. groupByKey==========")
    groupRDD.collect().foreach(println)

    val aggRDD = rdd.aggregateByKey(0)(math.max, _ + _)
    println("==========3. aggregateByKey1==========")
    aggRDD.collect().foreach(println)

    println("==========4. aggregateByKey2==========")
    val aggRDD2 = rdd.aggregateByKey(0)(_ + _, _ + _)
    aggRDD2.collect().foreach(println)

    val foldRDD = rdd.foldByKey(0)(_ + _)
    println("==========5. foldByKey==========")
    foldRDD.collect().foreach(println)

    val combineRDD = rdd.combineByKey((_, 1),
      (acc: (Int, Int), v) => (acc._1 + v, acc._2 + 1),
      (acc1: (Int, Int), acc2: (Int, Int)) => (acc1._1 + acc2._1, acc1._2 + acc2._2)
    ).mapPartitions(prt => {
      prt.map(f => (f._1, f._2._2))
    })
    println("==========6. combineByKey==========")
    combineRDD.collect().foreach(println)

    sc.stop()
  }
}
Spark CoreSpark的基础组件,提供了分布式任务调度、内存管理、错误恢复、存储管理等核心功能。以下是Spark Core的一些知识点概述: 1. RDD:弹性分布式数据集,是Spark中最基本的数据处理模型,可以看作是一个不可变的分布式数据集合,支持并行操作。 2. 累加器:用于在并行计算中对某个变量进行累加操作,可以在Driver端定义,但在Executor端进行累加操作。 3. 广播变量:用于在并行计算中对某个只读变量进行广播,以便在每个节点上使用相同的值,避免重复传输。 4. 分区:RDD中数据的分片,每个分区都会被一个Task处理,分区数可以手动指定。 5. 依赖关系:RDD之间的依赖关系分为窄依赖和宽依赖,窄依赖表示每个父RDD的分区最多只被一个子RDD的分区使用,宽依赖表示每个父RDD的分区可能被多个子RDD的分区使用。 6. SparkContext:Spark应用程序的入口,用于创建RDD、累加器、广播变量等。 7. 部署模式:Spark支持本地模式、Standalone模式、Yarn模式、Mesos模式等多种部署模式。 8. 数据读取:Spark支持从本地文件系统、HDFS、HBase、JDBC等多种数据源读取数据。 以下是一个例子,演示如何使用Spark Core读取本地文件并进行Word Count操作: ```python from pyspark import SparkContext # 创建SparkContext sc = SparkContext("local", "Word Count") # 读取文件并进行Word Count lines = sc.textFile("file:///path/to/file") words = lines.flatMap(lambda line: line.split(" ")) wordCounts = words.map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) # 输出结果 for wc in wordCounts.collect(): print(wc) # 关闭SparkContext sc.stop() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值