如果错误,pyspark udf rlike条件

时间:2017-08-23 21:30:10

标签: python hadoop apache-spark pyspark

我使用spark 2.1脚本是pyspark脚本

我的数据框如下所示

数据框名称:df

纳温

Naveen123

现在我的输出应为

纳温

我在udf下使用

def fn(a):
    if((a==rlike("[0-9]"))|(a==' ')):
        return s

df.withColumn("FLG",fn("a")).show()

我收到的错误如下:全局名称'rlike'未定义

请帮助我渡过这个障碍

1 个答案:

答案 0 :(得分:1)

您希望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))