有人能解释一下下面这段代码中发生了什么吗?我试图理解下面的Scala代码
此方法返回列的列表,当您使用此列表从数据帧中选择列时,某些列被设置为null allCols应该包含数据帧的所有列,myCols应该包含您想要保留的列。mycols中未包含的所有其他列将设置为null: val df=spark.createDataFrameSeq1,2,3,4,5,6,7,8,9.toDFa,b,c df.show val columns=exprSeta,df.columns.toSet df.selectcolumns:*.show 将打印有人能解释一下下面这段代码中发生了什么吗?我试图理解下面的Scala代码,scala,apache-spark,databricks,Scala,Apache Spark,Databricks,此方法返回列的列表,当您使用此列表从数据帧中选择列时,某些列被设置为null allCols应该包含数据帧的所有列,myCols应该包含您想要保留的列。mycols中未包含的所有其他列将设置为null: val df=spark.createDataFrameSeq1,2,3,4,5,6,7,8,9.toDFa,b,c df.show val columns=exprSeta,df.columns.toSet df.selectcolumns:*.show 将打印 import org.apac
import org.apache.spark.sql.functions._
def expr(myCols: Set[String], allCols: Set[String]) =
allCols.toList.map {
case x if myCols.contains(x) => col(x)
case x => lit(null).as(x)
}
在您的方法中,allCols的每个条目要么映射到实际列,要么使用Scala的魔力映射到空文本。您不明白什么?我认为学习Scala对于您来说是一种悲哀的必要性。除非你想运行你所遇到的每一段代码。
+---+---+---+
| a| b| c|
+---+---+---+
| 1| 2| 3|
| 4| 5| 6|
| 7| 8| 9|
+---+---+---+
+---+----+----+
| a| b| c|
+---+----+----+
| 1|null|null|
| 4|null|null|
| 7|null|null|
+---+----+----+