大数据全系列 教程
1869个小节阅读:466.8k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Spark提供了一个包: org.apache.spark.sql.functions,这个包里面提供了 一系列的计算函数供SparkSQL使用。
如何用呢?
导包
xxxxxxxxxx
import org.apache.spark.sql.functions._
然后就可以用F对象调用函数计算了,常用函数介绍
split功能函数:切分字符串
xxxxxxxxxx
Column对象 = split(被切分的列,分隔符)
explode功能函数:数组转列
xxxxxxxxxx
Column对象 = explode(被转换的列)
这些功能函数, 返回值多数都是Column对象。
需求:完成一个单词计数需求,使用DSL风格来实现。
编码实现:
xxxxxxxxxx
package com.itbaizhan.sql
import org.apache.spark.SparkConf
import org.apache.spark.sql.{Column, DataFrame, SparkSession}
import org.apache.spark.sql.functions._
object SSFuntions {
def main(args: Array[String]): Unit = {
//1.创建配置文件对象
val conf: SparkConf = new SparkConf()
.setMaster("local[*]")
.setAppName("SSFuntions")
//2.创建SparkSession对象
val spark: SparkSession = SparkSession.builder()
.config(conf).getOrCreate()
import spark.implicits._
//4.读取本地文件
val df1: DataFrame = spark.read.text("data/sql/words.txt")
//5."hello tom"=> "hello","tom"
val colSplit: Column = split(df1("value"), " ")
//6."hello","tom"=> "hello"
// "tom"
val explodeColumn: Column = explode(colSplit)
//7.对已经存在的列进行操作,返回一个新的列
val df2: DataFrame = df1.withColumn("value", explodeColumn)
//8.分组统计单词出现的次数,并降序排列
df2.groupBy("value")
.count()
//为列名重命名
.withColumnRenamed("value","word")
.withColumnRenamed("count","cnt")
//排序,按照单词出现的数量的倒叙排序
.sort($"cnt".desc)
.show()
//3.关闭spark
spark.stop()
}
}
实时效果反馈
1. 关于SparkSql的functions包的split功能函数split(arg1,arg2)
描述错误的选项?
A arg1
表示被切分的列。
B arg2
表示切分时使用的分隔符。
C 返回值为DataFrame对象
答案:
1=>C 返回值为Column对象。