Pyspark UDF 类似条件在 if 错误中



我正在使用 spark 2.1 脚本是 pyspark 脚本

下面给出了我的数据帧

数据帧名称:DF

一个

纳文

纳文123

现在我的输出应该是

一个

纳文

我为此在下面使用udf

def fn(a):
if((a==rlike("[0-9]"))|(a==' ')):
return s
df.withColumn("FLG",fn("a")).show()

我收到错误,例如:未定义全局名称"rlike">

请帮助我跨过这个障碍

您需要一个filter而不是一个添加额外列的withColumn

如果你想要严格的字母顺序:

import pyspark.sql.functions as psf
df = df.withColumn("isCharString", df.a.rlike("^[a-zA-Z]+$"))

如果要保留没有数字的字符串

df = df.withColumn("isCharString", ~df.a.rlike("[0-9]"))

使用函数时遇到的错误是因为您将rlike用作独立函数,但事实并非如此,它是类 pyspark 列的属性。要在 Spark 中重写函数,请执行以下操作:

df = df.withColumn("isCharString", psf.when(
df.a.rlike("[0-9]")| (df.a == " "), 
psf.lit("s")).otherwise(df.a))

最新更新