У меня есть фрейм данных, в котором я разделил его на «matchedDF» и «unmatchedDF» на основе columnid, соответствующего критериям.это работает;затем у меня есть коллекция столбцов в массиве, для которого я делаю foreach, чтобы обновить соответствующие столбцы в matchedDF и преобразовать результаты в новый DF (потому что я знаю, что DF неизменны).проблема возникает с созданием объекта newrow, когда я хочу, чтобы точка цикла указывала на столбец, который будет обновлен.есть проблема с циклом, и withColumn не будет работать, я получаю
блокнот: 6: ошибка: не найдена: значение $ x var newrow = matchDF.withColumn ($ x, lit ("0 ")). ToDF ()
это на лазурных блоках данных 5.2 (включает Apache Spark 2.4.0, Scala 2.11).Я могу сделать это без lamda / foreach, но это единовременно, и у меня есть более одного столбца для работы.
var notmatchDF = df.filter(!$"id".rlike (regexString)).toDF()
var matchDF = df.filter($"id".rlike (regexString)).toDF()
columnControl.foreach(x => {
var newrow = matchDF.withColumn($x, lit("0")).toDF()
val appended = notmatchDF.union(newrow).toDF()
})
Я ожидаю, что столбцы, представленные вПараметр columnControl будет установлен в «0» в новом кадре данных, который затем может быть добавлен к notmatchDF