【发布时间】:2017-04-11 22:57:05
【问题描述】:
我有一个具有以下架构的数据框:
root
|-- id: string (nullable = true)
|-- scoreMap: map (nullable = true)
| |-- key: string
| |-- value: struct (valueContainsNull = true)
| | |-- scores: struct (nullable = true)
| | | |-- SCORE1: double (nullable = true)
| | | |-- SCORE2: double (nullable = true)
| | | |-- SCORE3: double (nullable = true)
| | |-- combinedScore: double (nullable = true)
样本数据:
id scoreMap
id1 Map(key1 -> [[1.0, 3.2, 2.22], 2.42], key2 -> [[3.0, 3.2, 1.2], 4.42])
id2 Map(key3 -> [[1.0, 3.2, 2.22], 3.1], key3 -> [[3.0, 3.2, 1.2], 2.42])
我想要 1)。将scoreMap 列转换为列表,2)。按combinedScore 对列表进行排序(描述),3)。将排序列表中每个元素的索引添加到元素中。对于给定的示例,结果应该是:
id scoreList
id1 List([key2, [3.0, 3.2, 1.2], 4.42, 0], [key1,[1.0, 3.2, 2.22], 2.42, 1]])
id2 List([key3, [1.0, 3.2, 2.22], 3.1, 0], [key3, [3.0, 3.2, 1.2], 2.42, 1])
我怎样才能做到这一点?
【问题讨论】:
标签: scala apache-spark apache-spark-sql spark-dataframe