spark functions.expr:
functions.expr("substring([colName], [pos], [len])") --functions.expr("substring(text1, 0, 2)")
functions.expr("length([colName])")
functions.expr("lower([colName])")
functions.expr("upper([colName])")
functions.expr("concat([colName1],[colName2]...)")
functions.expr("abs([colName])")
functions.expr("ceil([colName])")
functions.expr("floor([colName])")
functions.expr("signum([colName])")
functions.expr("base64([colName])")
functions.expr("regexp_replace([colName],\"pattern\",\"replacement\")")
functions.expr("date_format([colName],\"format\")") --functions.expr("date_format(date1,\"yyyyMMdd\")")
functions.expr("ifnull([colName],\"[value]\")") --functions.expr("ifnull(text1,\"none\")")
functions.expr("CASE WHEN ISNULL(name) THEN '空' ELSE name END") --case when
functions.expr("if(ifnull(name), '空', name)") --if(A>B, A, B)
functions.expr("current_timestamp() - INTERVAL 20 MINUTE"); 减去20分钟
dataset=dataset.select(functions.expr("*"),functions.expr("posexplode(out)AS(out1,out2)")); --explode并返回下标,所以返回两个值,不能用withColumn