无法在foreach循环内的scala可变列表中添加元素

问题描述 投票:0回答:1

我正在尝试在mutable scala list中添加元素,如下所示。我正在逐行读取数据帧中的值,提取名称为“ _title”的列的值并将其添加到列表中。但是当for循环完成时,该列表仍然是空的。这是代码:

import scala.collection.mutable.ListBuffer
val flatK = dfR.withColumn("UserValue", explode(col("UserValue")))
var colListA = new ListBuffer[String]()
//    var colSet : List[String] = List()
    for(i <- 0 until Integer.parseInt(dfR.count().toString)){
      flatK.filter($"columnIndex" === i).foreach{
        r=>
          val columnName = r.getAs[Row]("UserValue").getAs[String]("_title")
//          println(columnName)
          colListA.append(columnName)
      }
    }

println(columnName)实际上打印我要放入列表中的值。我的数据框dfR看起来像这样:

 +--------------------------------------------------------------+-----------+
|UserValue                                                     |columnIndex|
+--------------------------------------------------------------+-----------+
|[, last_mod_date, 2009-01-14T13:40:53]                        |0          |
|[, object_string, SOLIDS]                                     |0          |
|[, last_mod_date, 2009-01-13T22:58:30]                        |1          |
|[, object_string, TORSO]                                      |1          |

我做的时候

colListA += "elements"
colListA += "adds"

我可以看到添加的元素。但不在foreach循环内。谁能告诉我该怎么办?基本上,我希望colList会填充last_mod_dateobject_string

scala apache-spark foreach scala-collections
1个回答
0
投票

如果要从数据框的列创建列表dataframe.select("_title").collect().map(_(0).asInstanceOf[String]).toList

您可以获得列的字符串列表。

© www.soinside.com 2019 - 2024. All rights reserved.