Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark Scala:如何根据向量的每个位置更新数据帧的每一列_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Spark Scala:如何根据向量的每个位置更新数据帧的每一列

Spark Scala:如何根据向量的每个位置更新数据帧的每一列,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有这样一个DF: +--------------------+-----+--------------------+ | col_0|col_1| col_2| +--------------------+-----+--------------------+ |0.009069428120139292| 0.3|9.015488712438252E-6| |0.008070826019024355| 0.4|3.3796960513

我有这样一个DF:

+--------------------+-----+--------------------+
|               col_0|col_1|               col_2|
+--------------------+-----+--------------------+
|0.009069428120139292|  0.3|9.015488712438252E-6|
|0.008070826019024355|  0.4|3.379696051366339...|
|0.009774715414895803|  0.1|1.299590589291292...|
|0.009631155146285946|  0.9|1.218569739510422...|
和两个向量:

v1[7.0,0.007,0.052]
v2[804.0,553.0,143993.0]
列的总数与每个向量中的位置总数相同。
如何使用保存在第i个位置的数字应用方程式进行计算以更新DF的当前值(在第i个位置)?我的意思是,我需要更新DF中的所有值,使用向量中的值

也许这就是你想要的

import org.apache.spark.sql.Column
import org.apache.spark.sql.DataFrame

val df = Seq((1,2,3),(4,5,6)).toDF

val updateVector = Vector(10,20,30)

val updateFunction = (columnValue: Column, vectorValue: Int) => columnValue * lit(vectorValue)

val updateColumns = (df: DataFrame, updateVector: Vector[Int], updateFunction:((Column, Int) => Column)) => {
    val columns = df.columns
    updateVector.zipWithIndex.map{case (updateValue, index) => updateFunction(col(columns(index)), updateVector(index)).as(columns(index))}
}

val dfUpdated = df.select(updateColumns(df, updateVector, updateFunction) :_*)

dfUpdated.show

+---+---+---+
| _1| _2| _3|
+---+---+---+
| 10| 40| 90|
| 40|100|180|
+---+---+---+

你能给我们具体的例子说明计算结果吗?一个预期的数据帧将尽可能地复制@RameshMaharjan,我以前无法添加该信息,但是,在USER 2682459给出的答案中,有一个很好的例子。如果你的答案对你有帮助,那么你应该考虑一下:“-<代码> UpDeVector Eng/<代码>可能是“代码> org。Apache。Skop.ML.LIALG.Vector @ USS6910411从未使用过ML,但是快速查看LIALG.vector表示我的答案是很容易适应。如果OP澄清了,我会很高兴地更新它:)