如何按照与数据帧中相同的顺序获取列?
val df = Seq(("1", "2", "a"), ("3", "4", "b"), ("5", "6", "d")).toDF("col1", "col2", "col3")
df.printSchema()
df: org.apache.spark.sql.DataFrame = [col1: string, col2: string ... 1 more field]
root
|-- col1: string (nullable = true)
|-- col2: string (nullable = true)
|-- col3: string (nullable = true)
df.columns
Array[String] = Array(col1, col2, col3)
dataset.columns
给出了列,它们似乎顺序相同,但我找不到任何关于这种情况的文档。我们可以依靠这种方法来获取与数据集中相同的列吗?
我们可以依靠这种方法来获取与它们在数据集中相同的顺序的列吗?
是的
def columns
的定义是:
/**
* Returns all column names as an array.
*
* @group basic
* @since 1.6.0
*/
def columns: Array[String] = schema.fields.map(_.name)
哪些访问,schema
类型为StructType
并包含field
:
case class StructType(fields: Array[StructField])
由于我们依赖于Array
,这里;标准库中的一个类,并使用它的基本map
方法,我们确实可以依赖排序。