我有一个数据框,其中已将其根据满足条件的列ID分为“ matchedDF”和“ unmatchedDF”。这样可行;然后我有一个数组中的列集合,我进行了foreach来更新matchedDF中的匹配列,并将结果转换为新的DF(因为我知道DF是不可变的)。当我想让循环指向将要更新的列时,就会出现创建newrow对象的问题。循环存在问题,withColumn无法正常工作,我得到
笔记本:6:错误:未找到:值$ x var newrow = matchDF.withColumn($ x,lit(“ 0”))。toDF()
这是在Azure Databricks 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()
})
我希望在newrow数据框中将columnControl中提供的列设置为“ 0”,然后可以将其附加到notmatchDF