Spark 词频统计 – 独立应用 IntelliJ IDEA

这次讲如何在IntelliJ IDEA里启动Spark,需要安装Scala插件。

版本说明

  • Scala: 2.12.8
  • Spark: 2.4 (对应的Hadoop是2.7)

用sbt编译scala,其中build.sbt文件核心配置如下(选择自动下载文件)

scalaVersion := "2.12.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.0"

SparkSession

通过spark-shell控制台进入spark时,系统会自动建立spark context。但是在代码里需要自己建立spark context。

先通过SparkSession的builder建立一个Session。

val session = SparkSession.builder()
  .master("local")
  .appName("WordCount")
  .getOrCreate()

Spark Context

然后通过Session建立一个Spark Context

val sc: SparkContext = session.sparkContext

这个sc就和通过控制台进入后的sc一样了。之后的代码就是一样的。

完整代码

import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.SparkSession._

object HelloWord {

  def wordCountFromString(sc: SparkContext): Unit = {
    val text = "hello world\nhello scala\nhello python"
    val lines = text.split("\n")
    val rdd = sc.parallelize(lines)
    rdd.foreach(println)

    val words = rdd.flatMap(_.split(" "))
    val wordsWithCount = words.map(w => (w, 1))
    val wordCounts = wordsWithCount.reduceByKey(_ + _)
    wordCounts.foreach(println)
  }

  def main(args: Array[String]): Unit = {
    val session = SparkSession.builder()
      .master("local")
      .appName("WordCount")
      .getOrCreate()
    val sc: SparkContext = session.sparkContext
    wordCountFromString(sc)
    sc.stop()
  }

}

    原文作者:桥梁
    原文地址: https://zhuanlan.zhihu.com/p/70453075
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞