SparkSQL常用聚合函数

聚合函数Aggregations

一、简单聚合

1.1 数据准备

// 需要导入 spark sql 内置的函数包
import org.apache.spark.sql.functions._

val spark = SparkSession.builder().appName("aggregations").master("local[2]").getOrCreate()
val empDF = spark.read.json("/usr/file/json/emp.json")
// 注册为临时视图,用于后面演示 SQL 查询
empDF.createOrReplaceTempView("emp")
empDF.show()

1.2 count

// 计算员工人数
empDF.select(count("ename")).show()

1.3 countDistinct

// 计算姓名不重复的员工人数
empDF.select(countDistinct("deptno")).show()

1.4 approx_count_distinct

通常在使用大型数据集时,你可能关注的只是近似值而不是准确值,这时可以使用 approx_count_distinct 函数,并可以使用第二个参数指定最大允许误差。

empDF.select(approx_count_distinct ("ename",0.1)).show()

1.5 first & last

获取 DataFrame 中指定列的第一个值或者最后一个值。

empDF.select(first("ename"),last("job")).show()

1.6 min & max

获取 DataFrame 中指定列的最小值或者最大值。

empDF.select(min("sal"),max("sal")).show()

1.7 sum & sumDistinct

求和以及求指定列所有不相同的值的和。

empDF.select(sum("sal")).show()
empDF.select(sumDistinct("sal")).show()

1.8 avg

内置的求平均数的函数。

empDF.select(avg("sal")).show()

1.9 数学函数

Spark SQL 中还支持多种数学聚合函数,用于通常的数学计算,以下是一些常用的例子:

// 1.计算总体方差、均方差、总体标准差、样本标准差
empDF.select(var_pop("sal"), var_samp("sal"), stddev_pop("sal"), stddev_samp("sal")).show()

// 2.计算偏度和峰度
empDF.select(skewness("sal"), kurtosis("sal")).show()

// 3. 计算两列的皮尔逊相关系数、样本协方差、总体协方差。(这里只是演示,员工编号和薪资两列实际上并没有什么关联关系)
empDF.select(corr("empno&#
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark SQL提供了一系列常用的函数,用于对数据进行处理、转换和分析。下面是一些常见的Spark SQL函数示例: 1. 聚合函数: - SUM(column):计算指定列的总和。 - AVG(column):计算指定列的平均值。 - MIN(column):找出指定列的最小值。 - MAX(column):找出指定列的最大值。 - COUNT(column):计算指定列的非空值数量。 2. 字符串函数: - LENGTH(column):计算指定列的字符长度。 - CONCAT(column1, column2, ...):将多个列合并为一个字符串。 - SUBSTRING(column, start, length):从指定列中截取子字符串。 - TRIM(column):去除指定列中的首尾空格。 3. 时间日期函数: - CURRENT_DATE():返回当前日期。 - CURRENT_TIMESTAMP():返回当前时间戳。 - DATE_FORMAT(date, format):将日期格式化为指定格式的字符串。 - YEAR(date):返回日期的年份。 - MONTH(date):返回日期的月份。 4. 条件函数: - CASE WHEN condition THEN value ELSE value END:根据条件进行条件判断。 - COALESCE(column1, column2, ...):返回第一个非空值。 - IF(condition, value1, value2):根据条件返回不同的值。 5. 数学函数: - ABS(column):返回指定列的绝对值。 - ROUND(column, scale):对指定列进行四舍五入。 - CEIL(column):返回大于等于指定列的最小整数。 - FLOOR(column):返回小于等于指定列的最大整数。 以上只是Spark SQL函数的一些示例,还有其他更多的函数可用于不同的数据处理需求。你可以根据具体情况来选择和使用相应的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值