У меня есть два фрейма данных в 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] |
+---+--------------------+
Мне нужно выполнить точечное произведение между строками в этих двух кадрах данных. То есть мне нужно умножить массив tf_idf
на data12
с каждой строкой tf_idf
в data22
.
(Пример: первая строка в точечном произведении должна быть такой: 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 ,
Спасибо