小编joa*_*imj的帖子

如何聚合Spark数据框以使用Scala获取稀疏向量?

我有一个类似于下面Spark中的数据框,我想按id列对其进行分组,然后对于分组数据中的每一行,我需要创建一个稀疏向量,其中包含weight列中指定的索引处的index列.稀疏矢量的长度是已知的,例如1000.

数据帧df:

+-----+------+-----+
|   id|weight|index|
+-----+------+-----+
|11830|     1|    8|
|11113|     1|    3|
| 1081|     1|    3|
| 2654|     1|    3|
|10633|     1|    3|
|11830|     1|   28|
|11351|     1|   12|
| 2737|     1|   26|
|11113|     3|    2|
| 6590|     1|    2|
+-----+------+-----+
Run Code Online (Sandbox Code Playgroud)

我读过这个类似于我想做的事情,但是对于一个rdd.有没有人知道使用Scala在Spark中为数据框执行此操作的好方法?

到目前为止,我的尝试是首先收集权重和索引,如下所示:

val dfWithLists = df
    .groupBy("id")
    .agg(collect_list("weight") as "weights", collect_list("index") as "indices"))
Run Code Online (Sandbox Code Playgroud)

看起来像:

+-----+---------+----------+
|   id|  weights|   indices|
+-----+---------+----------+
|11830|   [1, 1]|   [8, 28]|
|11113|   [1, 3]|    [3, …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark spark-dataframe

3
推荐指数
1
解决办法
2280
查看次数

标签 统计

apache-spark ×1

scala ×1

spark-dataframe ×1