【问题标题】:convert output of UDF转换UDF的输出
【发布时间】:2018-05-06 14:30:22
【问题描述】:

在 Pyspark 上,我将 UDF 定义如下:

from pyspark.sql.functions import udf
from scipy.spatial.distance import cdist

def closest_point(point, points):
    """ Find closest point from a list of points. """
    return points[cdist([point], points).argmin()]

udf_closest_point = udf(closest_point)

dfC1 = dfC1.withColumn("closest", udf_closest_point(dfC1.point, dfC1.points))

我的数据如下所示:

  • point = [0.2,0.5] 或 [0.1,0.6] - 浮点数组
  • points = [[0,1],[1,0],[1,1],[0,0]] - 浮点数组数组
  • closest = 例如,'[0, 1]' - 一个字符串(它是值之一 从点转换为字符串)

我应该对我的 UDF 进行哪些更改以返回浮点数组而不是字符串?

【问题讨论】:

    标签: arrays casting pyspark


    【解决方案1】:

    您可以将UDF的返回类型指定为浮点数组ArrayType(FloatType())

    from pyspark.sql.types import ArrayType, FloatType
    udf_closest_point = udf(closest_point, ArrayType(FloatType()))
    

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2021-11-15
      • 2017-11-21
      相关资源
      最近更新 更多