pyspark.sql.functions模块:内置函数集合

目录

  • 前言
  • 正文
    • 三角函数及数学函数
    • agg系列
    • 列编解码
    • 时间相关
    • Window function
    • 字符串处理
    • 多个列操作(横向操作)
    • Collection function
    • 无分类常用API
    • 无分类

前言

API的spark版本为v2.2.0。参考链接pyspark.sql.functions官方文档

详解了部分常用的API及使用方法。

正文

三角函数及数学函数

API 作用 备注
abs 绝对值 -
acos acos -
asin asin -
atan atan -
atan2 两个列的atan2 -
bitwiseNOT 按位取反:-(n+1) -
bround HALF_EVEN,如果前一位是偶数,五舍六入,否则四舍五入 -
cbrt 立方根 -
ceil 取不超过x的最大整数 -
cos cos -
cosh 双曲余弦 -
conv 进制转换 -
degrees 弧度转角度 -
exp exp -
expm1 先求指数再减1 -
factorial 阶乘 -
floor 向下取整 -
log log -
log10 log10 -
log1p 先求对数再加1 -
log2 log2 -
pow 求指数,第一列为底数,第二列为指数 -
radians 角度转弧度 -
round(col,scale) HALF_UP,同传统意义四舍五入 scale >= 0四舍五入,scale<0取整数部分 -
rand [0,1]之间的iid随机数 -
randn 标准正态分布采样 -
rint 返回最接近的整数并转化为浮点数,0.5的话向绝对值大的方向转换 -
signum 符号函数 -
sin sin -
sinh sinh -
sqrt 平方根 -
tan tan -
tanh tanh -

agg系列

API 作用 备注
avg df.groupBy.agg或df.agg -
collect_list 与agg联合使用,将分组中的列作为list返回 -
collect_set 与agg联合使用,将分组中的列作为set返回 -
corr 与agg联合使用,求皮尔逊相关系数 -
count 每组元素个数 -
countDistinct 每组distinct元素个数 -
covar_pop 两列总体协方差 -
covar_samp 两列样本协方差 -
first 分组第一个值 -
grouping -
grouping_id -
kurtosis 列的峰度 -
last df.groupBy(‘name’).agg(F.first(‘score’)).show() -
max 最大值 -
mean 均值 -
min 最小值 -
skewness 偏度 -
stddev 样本标准偏差,同stddev_samp -
stddev_samp 样本标准偏差,同stddev -
stddev_pop 总体标准偏差 -
sum 与agg联合使用,求和 -
sumDistinct 先distinct,再求和 -
var_pop 总体方差 -
var_samp 样本方差 -
variance 样本方差,同var_samp -

列编解码

API 作用 备注
ascii 计算string列的ascii数值 -
bin 二进制 -
hex 十六进制 -
base64 -
unbase64 -
crc32 列的crc32 -
md5 列的md5 -
sha1 字符串列元素的sha1 -
sha2 sha2加密,需指定位数 -

时间相关

API 作用 备注
date_add 从指定天累加天数 -
date_sub 从指定天减少天数 -
add_months 从指定月份累加月份 -
current_date 返回当前date作为一列 -
current_timestamp 返回当前time作为一列 -
date_format 输出时间格式 -
datediff 两个日期列相隔天数 -
dayofmonth 一个月的第几天 -
dayofyear 一年的第几天 -
year -
weekofyear 一年的第几个星期 -
month 月份 -
hour -
minute -
second -
last_day 一个月最后一天 -
months_between 两个时间的月份差 -
from_unixtime 将以秒为时间的列转换为格式化字符串(yyyy-MM-dd HH:mm:ss) -
from_utc_timestamp 带时区时间转换 -
next_day 下一周的今天的日期,相当于加7 -
quarter 日期处于哪个季度(1,2,3,4) -
trunc 返回年或月的第一天 -
unix_timestamp 转为以秒为单位的时间戳(unix) -
window 时间窗口 -

Window function

这部分请参考我的博文:《PySpark和SQL中的Window function》

API 作用 备注
cume_dist cume_dist -
dense_rank 排序序号跳跃[(1,1),(1,1),(2,3)] -
rank 排序序号不跳跃[(1,1),(1,1),(2,2)] -
lag -
lead -
ntile -
percent_rank -
row_number -

字符串处理

API 作用 备注
initcap 句子每个单词首字母大写 -
instr 子字符串在母字符串中的位置 -
length 字符串长度 -
locate 字符串出现的位置 -
lower 字符串全部转小写 -
upper 字符串全部转大写 -
lpad 指定子字符串左填充母字符串 -
rpad 和lpad对应 -
ltrim 删除str左边空白 -
rtrim 删除str右边空白 -
trim 删除str两侧空白 -
regexp_extract re匹配返回匹配的元素,否则为空字符串 -
regexp_replace re匹配返回最后的参数,否则为原字符串 -
repeat 重复指定字符串n次 -
reverse (Collection function)反转字符串或array -
soundex SoundEx返回由四个字符组成的代码以评估两个字符串的相似性。 -
split 分隔符可以是子字符串或者list,如果是list,每个元素都是分隔符,如[ABC] -
substring(str, pos, len) 字符串截取,pos从1开始 -
substring_index(str, delim, count) 先用delim对str进行分割,count可以理解为list中的slice,选取delim分割后的str中的子串 -
translate 字符串替换,后两个参数对应替换 -

多个列操作(横向操作)

API 作用 备注
coalesce 取非null的列,如果所有列均非null,取第一个列的值 -
nanvl 取非Nan的列,如果所有列均非Nan,取第一个列的值 -
concat 将多个列连接起来,适合字符串二进制和数组.注意和array区别 -
concat_ws 使用指定分隔符将多个列连接起来,不可以用在groupby.agg中,返回空值(2022.07.26) -
hash 列的每个元素的组合hash -
hypot 两个列每个元素的欧氏距离 -
greatest 指定几列对比的最大值 -
least 比较多个列选取最小值 -

Collection function

API 作用 备注
array_contains 如果列元素是array,判断array是否有某个元素 -
size 计算array或map中的长度 -
sort_array array排序 -

无分类常用API

API 作用 备注
isnan 是否为nan -
isnull 是否为空值null -
spark_partition_id 分区编号作为一列 -
udf udf 请参考《PySpark系列:pyspark udf的使用》
when F.when(df.score>=80,100).when(df.score<60,0).otherwise(50) -
col 选取df列名作为参数,返回新的列 -
column 同col -

无分类

API 作用 备注
approx_count_distinct 去重后的值的大约个数(速度快) -
array 组合多个列作为array -
asc 官方没例子,Column.asc可以代替 -
desc 官方没例子,Column.desc可以代替 -
broadcast 将DF标记为足够小,以便在broadcast joins中使用 -
create_map 两列之前的字典映射,前者为key,后者为value -
decode 解码为指定字符集 -
encode 编码为指定字符集 -
explode 将列的list元素变为列 -
posexplode 类似explode,多一个位置列 -
expr 执行表达式字符串并返回column -
format_number 保留几位小数 -
format_string 字符串格式化(%d,%s,%f) -
from_json from_json -
functools 一个模块,新版已经删除 -
get_json_object 从json字符串提取列 -
input_file_name 为当前Spark任务的文件名创建一个字符串列。 -
json_tuple 根据key解析json字符串并返回相应列 -
levenshtein 两个列字符串逻辑距离 -
lit 通过字面值(literal value)创建column -
monotonically_increasing_id 添加单调递增的64-bit整数作为column -
shiftLeft 位运算-左移 -
shiftRight 位运算-右移 -
shiftRightUnsigned 无符号位运算右移 -
struct 组合多列作为一个struct -
to_date 等价于pyspark.sql.Column.cast(“date”),将列元素转换为pyspark.sql.types.DateType类型 -
to_json 将包含StructType,ArrayType或MapType的column转化为json -
to_timestamp 将Column转换为pyspark.sql.types.TimestampType 类型 -
to_utc_timestamp 将Column转换为带utc的时间戳类型 -

你可能感兴趣的:(专栏01-PySpark使用,pyspark,spark)