【发布时间】:2020-02-06 15:12:21
【问题描述】:
我试图在 UDF 中使用 Pyspark 子字符串函数是徒劳的。下面是我的代码 sn-p -
from pyspark.sql.functions import substring
def my_udf(my_str):
try:
my_sub_str = substring(my_str,1, 2)
except Exception:
pass
else:
return (my_sub_str)
apply_my_udf = udf(my_udf)
df = input_data.withColumn("sub_str", apply_my_udf(input_data.col0))
样本数据是-
ABC1234
DEF2345
GHI3456
但是当我打印 df 时,我在新列“sub_str”中没有得到任何值,如下所示 -
[Row(col0='ABC1234', sub_str=None), Row(col0='DEF2345', sub_str=None), Row(col0='GHI3456', sub_str=None)]
谁能告诉我我做错了什么?
【问题讨论】:
-
这是因为you can not use any of the
pyspark.sql.functionsinside of audf。你也不能reference a spark DataFrame inside audf。因为你有一个naked except,所以你正在吞下真正的错误消息并返回None,因为这就是没有return时python函数所做的事情。
标签: pyspark