我用一个函数创建了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')))
它导致
属性错误:"用户定义的函数"对象没有属性"_get_object_id"错误。
任何人都可以解释一下错误。还有其他方法可以做到这一点吗?
你能试试这个代码吗.而查询数据帧 我们必须遵循的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|
+---+-----------------+