не удается создать спикер withColumn при создании нового фрейма данных, когда это делается в цикле - PullRequest
0 голосов
/ 11 мая 2019

У меня есть фрейм данных, в котором я разделил его на «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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...