我有一个udf功能:
@staticmethod
@F.udf("array<int>")
def create_users_array(val):
""" Takes column of ints, returns column of arrays containing ints. """
return [val for _ in range(val)]
我称之为:
df.withColumn("myArray", create_users_array(df["myNumber"]))
我传递一个整数的数据帧列,它返回一个整数的数组。
E.g。
4 --> [4,4,4,4]
直到我们从Python 2.7升级并升级我们的EMR版本(我相信使用Pyspark 2.3)它才有效。
任何人都知道造成这种情况的原因是什么?
答案 0 :(得分:1)
看起来这与在较新版本中对UDF所做的改进有关(或者更确切地说,旧语法的弃用)。改变udf装饰器对我有用。 @F.udf("array<int>")
- &gt; @F.udf(ArrayType(IntegerType()))