使用SparkSQL2.x的SQL方式实现WordCount

本文介绍使用 Spark SQL 进行 WordCount 统计的方法,包括创建 SparkSession、读取数据、执行 SQL 查询并展示结果。通过 Dataset API 和 SQL 语法结合的方式,实现了对文本文件中单词的频率统计。

代码里面有很详细的说明

代码实现:

package cn.ysjh0014.SparkSql

import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}

object SparkSQLWordCount {

  def main(args: Array[String]): Unit = {

    //创建SparkSession
    val session: SparkSession = SparkSession.builder().appName("SQLWordCount").master("local[4]").getOrCreate()

    //读数据,是lazy

    //Dataset也是一个分布式数据集,是对RDD的进一步分装
    //Dataset只有一列,默认这列叫value
    val lines: Dataset[String] = session.read.textFile(args(0))

    //导入隐式转换
    import  session.implicits._
    val word: Dataset[String] = lines.flatMap(_.split(","))

    //注册表
    word.createTempView("test")

    //执行SQL
    val result: DataFrame = session.sql("SELECT value,COUNT(*) counts FROM test GROUP BY value ORDER BY counts DESC")

    result.show()

    session.stop()


  }
}

运行后你会发现他的速度会变慢,这是因为他会生成执行计划,然后再运行计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值