【发布时间】:2017-05-23 21:56:39
【问题描述】:
我正在尝试将元组列表传递给 scala 中的 udf。我不确定如何为此准确定义数据类型。我试图将它作为一整行传递,但它无法真正解决它。我需要根据元组的第一个元素对列表进行排序,然后返回 n 个元素。我已经为 udf 尝试了以下定义
def udfFilterPath = udf((id: Long, idList: Array[structType[Long, String]] )
def udfFilterPath = udf((id: Long, idList: Array[Tuple2[Long, String]] )
def udfFilterPath = udf((id: Long, idList: Row)
这就是 idList 的样子:
[[1234,"Tony"], [2345, "Angela"]]
[[1234,"Tony"], [234545, "Ruby"], [353445, "Ria"]]
这是一个像上面一样有 100 行的数据框。我将 udf 称为如下:
testSet.select("id", "idList").withColumn("result", udfFilterPath($"id", $"idList")).show
当我打印数据帧的架构时,它会将其读取为结构数组。 idList 本身是通过对按键分组并存储在数据框中的元组列执行收集列表来生成的。关于我做错了什么的任何想法?谢谢!
【问题讨论】:
标签: scala apache-spark udf