我正在尝试创建一个在列中获取值(数组)并返回仅包含唯一元素的数组的udf。请参阅Spark中的代码(版本1.6.1):
def uniq_array(col_array):
x = np.unique(col_array)
return x
uniq_array_udf = udf(uniq_array,ArrayType())
但是,我一直遇到错误:
TypeError: __init__() takes at least 2 arguments (1 given)
有人可以帮我尽快解决错误吗?
谢谢!
答案 0 :(得分:5)
对于ArrayType,还需要指定数组内容的类型,例如
def uniq_array(col_array):
x = np.unique(col_array)
return x
uniq_array_udf = udf(uniq_array,ArrayType(IntegerType()))