【发布时间】:2020-03-07 05:57:31
【问题描述】:
我在 Spark Scala 中有两个数据帧,每个数据帧的第二列是一个数字数组
val data22= Seq((1,List(0.693147,0.6931471)),(2,List(0.69314, 0.0)),(3,List(0.0, 0.693147))).toDF("ID","tf_idf")
data22.show(truncate=false)
+---+---------------------+
|ID |tf_idf |
+---+---------------------+
|1 |[0.693, 0.702] |
|2 |[0.69314, 0.0] |
|3 |[0.0, 0.693147] |
+---+---------------------+
val data12= Seq((1,List(0.69314,0.6931471))).toDF("ID","tf_idf")
data12.show(truncate=false)
+---+--------------------+
|ID |tf_idf |
+---+--------------------+
|1 |[0.693, 0.805] |
+---+--------------------+
我需要在这两个数据框中执行行之间的点积。那就是我需要将data12 中的tf_idf 数组与data22 中tf_idf 的每一行相乘。
(例如:点积的第一行应该是这样的:0.693*0.693 + 0.702*0.805
第二行:0.69314*0.693 + 0.0*0.805
第三行:0.0*0.693 + 0.693147*0.805)
基本上我想要一些东西(比如矩阵乘法)data22*transpose(data12)
如果有人可以建议一种在 Spark Scala 中执行此操作的方法,我将不胜感激。
谢谢
【问题讨论】:
标签: scala apache-spark dot-product