【问题标题】:Pyspark - AttributeError: 'UserDefinedFunction' object has no attribute '_get_object_id'Pyspark - AttributeError:“UserDefinedFunction”对象没有属性“_get_object_id”
【发布时间】:2018-03-21 16:55:59
【问题描述】:

我使用函数创建了 python 文件 (python_file.py),然后在同一范围内的 pyspark-shell 中将该函数作为 UDF 调用。代码如下

import python_file as outer
pyspark_func = udf(outer.my_funct, StringType())
df1 = df.select(pyspark_func(col('col1')))

结果

AttributeError: 'UserDefinedFunction' 对象没有属性 '_get_object_id' 错误。

谁能解释一下这个错误。还有其他方法吗?

【问题讨论】:

    标签: python-2.7 apache-spark pyspark spark-dataframe attributeerror


    【解决方案1】:

    您能否尝试使用此代码。而我们必须遵循的查询数据框 Spark Sql 已给出格式

    实际数据

    +--------+---+----+
    |    date| id|name|
    +--------+---+----+
    | 05FEB12|101|John|
    | 19APR13|102|Mike|
    |19APR17s|103|Anni|
    +--------+---+----+
    

    UDF 创建和注册

    def userDefinedMethod(sample):
        return sample+"is my Name"
    
    userDefinedMethod = udf(userDefinedMethod, StringType())
    
    **dataDf.select(dataDf["id"],dataDf["name"],userDefinedMethod(dataDf["name"]).alias("Modified name")).show()**
    

    结果输出:

    +---+-----------------+
    | id|Incremental value|
    +---+-----------------+
    |101|   Johnis my Name|
    |102|   Mikeis my Name|
    |103|   Anniis my Name|
    +---+-----------------+
    

    【讨论】:

    • 这与问题有何关系?真的能解决问题吗?
    • 是的。即使我在尝试使用这样的查询来查询数据框时也遇到了同样的问题-->“df1 = df.select(pyspark_func(col('col1')))”并且由于用户定义的 udf 函数导致的错误未注册暂时的或永久的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多