有人能解释一下下面这段代码中发生了什么吗?我试图理解下面的Scala代码

有人能解释一下下面这段代码中发生了什么吗?我试图理解下面的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

此方法返回列的列表,当您使用此列表从数据帧中选择列时,某些列被设置为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.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|
+---+----+----+