我正在尝试使用PySpark中的UDF函数创建列。
我尝试的代码如下所示:
# The function checks year and adds a multiplied value_column to the final column
def new_column(row, year):
if year == "2020":
return row * 0.856
elif year == "2019":
return row * 0.8566
else:
return row
final_udf = F.udf(lambda z: new_column(z), Double()) #How do I get - Double datatype here
res = res.withColumn("final_value", final_udf(F.col('value_column'), F.col('year')))
如何在final_udf
中写入Double()?我知道对于string,我们可以使用StringType()
。但是如何在“final_value”列中返回double类型?
2条答案
按热度按时间jdgnovmf1#
输入:
udf
在处理大数据时效率非常低。*您应该首先尝试在原生Spark中执行此操作:
如果在原生Spark中无法完成,请转到**
pandas_udf
**:只有在万不得已的情况下,你才应该选择
udf
:7rtdyuoh2#
使用简单的字符串
"double"
或导入pypspark的DoubleType