天天看点

Spark用Scala做WordCount案例

1.项目结构

2.单词文档(data/words)

Kobe James Jordan Pual
Kobe Kobe James Jordan Jordan
Kobe James Jordan
Kobe Pual Pual      

3.导入Spark依赖

<dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.3.1</version>
        </dependency>
    </dependencies>      

4.源码计算(WordCountByScala)

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

/**
 * @Author yqq
 * @Date 2021/12/06 20:09
 * @Version 1.0
 */
object WordCountByScala {
   /**
     * SparkConf 是Spark的配置,可以设置:
     *   1).Spark运行模式
     *     local:本地运行模式,多用于本地使用eclipse | IDEA 测试代码。
     *     yarn: hadoop生态圈中的资源调度框架,Spark可以基于Yarn进行调度资源
     *     standalone:Spark自带的资源调度框架,支持分布式搭建,spark可以基于自带的资源调度框架来进行调度。
     *     mesos:资源调度框架。
     *     k8s:虚拟化的方式运行。
     *
     *   2).可以设置在Spark WEBUI中展示的Spark Application的名称
     *   3).可以设置运行的资源情况
     *       主要的资源包含core 和内存
     */
  def main(args: Array[String]): Unit = {
    //初始化spark的上下文
     /**
     * SparkContext 是通往Spark集群的唯一通道
     */
    val context = new SparkContext(
      new SparkConf()
        .setAppName("scala-wc")
        .setMaster("local")
    )
    //读取数据
    val value = context.textFile("data/words")
      .flatMap(_.split(" "))
      .map((_, 1))
      .reduceByKey(_ + _)

    value.foreach(println)
  }
}      

继续阅读