pyspark udf 返回值
Posted
技术标签:
【中文标题】pyspark udf 返回值【英文标题】:pyspark udf return values 【发布时间】:2019-11-20 22:18:51 【问题描述】:我创建了一个返回列表列表(内置列表对象)的 udf。我将返回的值保存到新列中,但发现它已转换为字符串。我需要它作为列表列表才能激活posexplode,正确的方法是什么?
def conc(hashes, band_width):
...
...
return combined_chunks #it's type: list[list[float]]
concat = udf(conc)
#bands column becomes a string
mh2 = mh1.withColumn("bands", concat(col('hash'),lit(bandwidth)))
【问题讨论】:
使用concat = udf(conc, 'array<array<float>>')
【参考方案1】:
我解决了:
concat = udf(conc,ArrayType(VectorUDT()))
并且在 conc 中:使用 Vectors.dense 返回一个密集向量列表。
【讨论】:
以上是关于pyspark udf 返回值的主要内容,如果未能解决你的问题,请参考以下文章
PySpark UDF 测试从 String 到 Int 的转换
如何在 pyspark 中使用 pandas UDF 并在 StructType 中返回结果
PySpark。将 Dataframe 传递给 pandas_udf 并返回一个系列
Pyspark - 调用 pandas_udf 时出错,结果返回 Series.interpolate()