Scala 更新列值数组[行]

Scala 更新列值数组[行],scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有一个包含许多列的数据框,我在Array[Row] 使用collect: var table = df.collect() 在此之后,我尝试循环到其中并修改某些列的值 for(i <- 0 to dfEleve.length-1){ var value = dfEleve.apply(i).getAs("uid") } 输出 |姓名|年龄| uid| -------------------------- |大卫| 25 | uip154| |Jean |

我有一个包含许多列的数据框,我在
Array[Row]
使用collect:

var table = df.collect()
在此之后,我尝试循环到其中并修改某些列的值

  for(i <- 0 to dfEleve.length-1){
        var value = dfEleve.apply(i).getAs("uid")
  }
输出

|姓名|年龄| uid|
--------------------------  
|大卫| 25 | uip154|
|Jean | 20 | uaz214|

谢谢。

如果我正确理解您的问题:您想更新/修改数据框的某些列,那么我建议您使用
udf
函数,并使用
withColumn
函数调用
udf
函数
例如:
对于您问题中的输入和输出:

import sqlContext.implicits._
val df = Seq(("David", 25, ""), ("Jean", 20, "")).toDF("Name", "age", "uid")
df.withColumn("uid", testUdf(df("Name")))


import org.apache.spark.sql.functions.udf
def testUdf = udf((value: String) => {
    if(value.equalsIgnoreCase("David")) "uip154"
    else if(value.equalsIgnoreCase("Jean")) "uaz214"
    else ""
  })
您可以编辑testUdf函数以满足您的逻辑