Select 基于 Apache Spark Scala 中的列数据类型将数据帧中的列转换为另一个数据帧

Select columns from a dataframe into another dataframe based on column datatype in Apache Spark Scala

我有一个 spark 数据框

inputDF: org.apache.spark.sql.DataFrame = [_id: string, Frequency:              double, Monterary: double, Recency: double, CustID: string]
        root
     |-- _id: string (nullable = false)
     |-- Frequency: double (nullable = false)
     |-- Monterary: double (nullable = false)
     |-- Recency: double (nullable = false)
     |-- CustID: string (nullable = false)

我想通过从中删除字符串列来创建一个新的数据框。具体情况是不遍历列名。 有人知道吗?

如果模式是扁平的并且只包含简单类型,您可以过滤字段,但除非您有 crystal 球,否则您无法真正避免迭代:

import org.apache.spark.sql.types.StringType
import org.apache.spark.sql.functions.col

df.select(df.schema.fields.flatMap(f => f.dataType match {
  case StringType => Nil
  case _ => col(f.name) :: Nil
}): _*)