如何将火花数据帧中的所有列名称获取到Seq变量中。获取Spark数据帧列表
输入数据&架构
val dataset1 = Seq(("66", "a", "4"), ("67", "a", "0"), ("70", "b", "4"), ("71", "d", "4")).toDF("KEY1", "KEY2", "ID")
dataset1.printSchema()
root
|-- KEY1: string (nullable = true)
|-- KEY2: string (nullable = true)
|-- ID: string (nullable = true)
我需要存储使用Scala编程中变量的所有列名。我试过如下,但它不起作用。
val selectColumns = dataset1.schema.fields.toSeq
selectColumns: Seq[org.apache.spark.sql.types.StructField] = WrappedArray(StructField(KEY1,StringType,true),StructField(KEY2,StringType,true),StructField(ID,StringType,true))
预期输出:
val selectColumns = Seq(
col("KEY1"),
col("KEY2"),
col("ID")
)
selectColumns: Seq[org.apache.spark.sql.Column] = List(KEY1, KEY2, ID)
输出operty应序列[org.apache。 spark.sql.Column],而不是List [String]。 – raam
@raam - 你想用输出/列名称做什么?为什么你需要它是类型的列? – Yaron
我需要通过中间结果来实现这个逻辑。所以我需要列的输出 – raam