我有一个dataframe,其中一列包含一个arraylist,其中包含形式(key,score)的结构,即下面的value列。 另外,我还有一个名为item的列,其中包含一个字符串。你知道吗
root
|-- value: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- key: string (nullable = true)
| | |-- score: double (nullable = true)
|-- id: string (nullable = true)
|-- item: string (nullable = true)
当项不为null时,我想搜索arraylist以查看该项是否存在于value.key键(s) 是的。如果不存在,则将(item,min)追加到arraylist in value列。这里,min是arraylist中分数的最小值。 我需要保留arraylist中元素的顺序,并将新结构附加到列表的末尾。你知道吗
样本输入:
+-----------------------------------+------+------+
| value | id | item |
+-----------------------------------+------+------+
|[[e1, 0.4] , [e2, 0.3]] | 1 | e3 |
|[[e1, 0.4] , [e2, 0.3], [e3, 0.2]] | 2 | e4 |
|[[e1, 0.4] , [e2, 0.3]] | 3 | e1 |
|[[e1, 0.4] , [e2, 0.3]] | 4 | null |
+-----------------------------------+------+------+
样本输出:
+------------------------------------------------+------+------+
| value | id | item |
+------------------------------------------------+------+------+
|[[e1, 0.4] , [e2, 0.3], [e3, 0.3]] | 1 | e3 |
|[[e1, 0.4] , [e2, 0.3], [e3, 0.2], [e4, 0.2]] | 2 | e4 |
|[[e1, 0.4] , [e2, 0.3]] | 3 | e1 |
|[[e1, 0.4] , [e2, 0.3]] | 4 | null |
+------------------------------------------------+------+------+
如果我想在列表中的特定位置添加新的(键、分数),解决方案会有什么不同?(例如开始或中间)
您可以定义
udf
函数来实现它。你知道吗相关问题 更多 >
编程相关推荐