我获取一个现有的数据帧并用一个包含元组的字段创建一个新的数据帧。UDF用于生成此字段。例如,在这里,我获取一个源元组并修改其元素以生成一个新元组:
udf( lambda x: tuple([2*e for e in x], ...)
问题是元组的长度事先不知道,并且可以在行与行之间变化。在
根据我阅读相关讨论的了解,要返回元组,UDF的返回类型必须声明为StructType。但是,由于返回的元组中的元素数量未知,所以我不能只写如下内容:
^{pr2}$似乎可以返回列表,但列表对我不起作用,因为我需要输出数据帧中的散列对象。在
我有什么选择?在
提前谢谢
每次一行的新语法per Databricks(Spark)(语法更符合Pandas UDF,这似乎是UDF在pythonhttps://databricks.com/blog/2017/10/30/introducing-vectorized-udfs-for-pyspark.html)中的发展方向:
一次一行:
StructType
/Row
表示固定大小的product type对象,不能用于表示可变大小的对象。在若要表示同构集合,请使用
list
作为外部类型,ArrayType
作为SQL类型:或(Spark 2.2或更高版本):
^{pr2}$在Spark 2.4或更高版本中,您可以使用
transform
相关问题 更多 >
编程相关推荐