spark java udf_在spark中使用UDF函数

spark-udf

虽然spark.sql.function中的已经包含了大多数常用的函数,但是总有一些场景是内置函数无法满足要求的,此时就需要使用自定义函数了(UDF)。刚好最近用spark时,scala,java,python轮换着用,因此这里总结一下spark中自定义函数的简单用法。

这里总结了scala,java,python 三种接口的DataFrame和sparkSQL的自定义函数定义和使用方法,对于比较复杂的分组自定义函数未涉及,对于这类复杂需求,应该有变通之法吧。

1、pyspark接口的UDF

1.1、在dataframe中使用

# 定义自定义函数

import numpy as np

def log_py(num):

return float(np.log(num))

# 注册自定义函数

log_udf = functions.udf(log_py, FloatType())

# 使用自定义函数

dataframe = dataframe.withColumn(col, log_udf(col))

特别说明:np.log的返回值类型是numpy.float类型,spark是无法识别的,因此要转换成Python的float类型,因此写成float(np.log(num))

1.2、在sparkSQL中使用

# 定义自定义函数

def is_nulludf(fieldValue, defaultValue):

if fieldValue == None:

return defaultValue

return fieldValue

# 注册自定义函

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值