天天看點

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)
  }
}      

繼續閱讀