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()

在 for 循环中使用 udf 在 Pyspark 中创建多个列

pyspark 中的 UDF 能否返回与列不同的对象?