Apache Spark 提供了多种类型的函数,这些函数在数据处理和转换过程中起着关键作用。以下是一些常见的 Spark 函数类型:
-
聚合函数(Aggregate Functions):
sum()
: 对所有元素求和。avg()
: 计算所有元素的平均值。count()
: 统计元素的数量。max()
: 找出所有元素中的最大值。min()
: 找出所有元素中的最小值。stddev()
: 计算所有元素的标准差。stddevPop()
: 计算总体标准差。stddevSamp()
: 计算样本标准差。first()
,last()
: 分别返回第一个和最后一个元素。argMax()
,argMin()
: 分别返回最大值和最小值的索引。
-
数学函数(Mathematical Functions):
abs()
: 返回元素的绝对值。acos()
,asin()
,atan()
: 分别返回反余弦、反正弦和反正切值。ceil()
,floor()
: 分别返回向上取整和向下取整的结果。cos()
,sin()
,tan()
: 分别返回余弦、正弦和正切值。exp()
: 返回自然指数。log()
,log10()
: 分别返回自然对数和以10为底的对数。pow()
: 返回一个数的幂。round()
: 四舍五入到指定的小数位数。sqrt()
: 返回平方根。tanh()
: 返回双曲正切值。
-
字符串函数(String Functions):
length()
: 返回字符串的长度。lower()
,upper()
: 分别将字符串转换为小写和大写。trim()
: 去除字符串两端的空白字符。concat()
: 连接两个或多个字符串。contains()
: 检查字符串是否包含另一个字符串。startsWith()
,endsWith()
: 检查字符串是否以特定子串开头或结尾。replace()
: 在字符串中替换所有指定的子串。split()
: 将字符串按照指定的分隔符拆分为数组。substr()
: 从字符串中提取子串。indexOf()
,lastIndexOf()
: 查找子串在字符串中的位置。
-
日期和时间函数(Date and Time Functions)(注:这些函数在 Spark 2.4 及更高版本中可用):
current_date()
: 返回当前日期。current_timestamp()
: 返回当前时间戳。date_format()
: 将日期格式化为指定格式。date_add()
,date_sub()
: 分别向日期添加或减去指定的时间间隔。dayofweek()
: 返回日期是星期几(1 表示星期日,7 表示星期六)。month()
,year()
: 分别返回日期的月份和年份。quarter()
: 返回日期所在的季度。to_date()
: 将字符串或时间戳转换为日期。
-
集合函数(Set Functions)(注:这些函数在 Spark 2.0 及更高版本中可用):
collect_list()
: 收集所有元素到一个列表中。collect_set()
: 收集所有元素到一个集合中,重复元素会被去重。collect_map()
: 收集所有键值对到一个映射中。size()
: 返回集合或列表的大小。
-
其他常用函数:
expr()
: 允许用户使用 SQL 表达式作为函数参数。posexplode()
: 将数组或集合展开为多行。posexplode_array()
: 专门用于展开数组的函数。broadcast()
: 用于将变量广播到所有工作节点。rand()
: 生成一个随机数。rand_between()
: 生成一个指定范围内的随机数。hash()
: 计算元素的哈希值。col()
,expr()
,input_file_name()
: 这些函数用于从 DataFrame 或 Dataset 中提取列或执行表达式。
请注意,上述函数可能因 Spark 版本的不同而略有差异。在实际使用中,建议查阅您所使用的 Spark 版本的官方文档以获取最准确的信息。