代码里面有很详细的说明
代码实现:
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()
}
}
运行后你会发现他的速度会变慢,这是因为他会生成执行计划,然后再运行计算
本文介绍使用 Spark SQL 进行 WordCount 统计的方法,包括创建 SparkSession、读取数据、执行 SQL 查询并展示结果。通过 Dataset API 和 SQL 语法结合的方式,实现了对文本文件中单词的频率统计。

1400

被折叠的 条评论
为什么被折叠?



