Apache spark 从Spark DataFrame中的架构中提取名称

Apache spark 从Spark DataFrame中的架构中提取名称,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我试图创建一个函数,将列的名称从dataframe模式中提取出来。所以我定义的是初始函数: val df = sqlContext.parquetFile(inputVal.toString) val dfSchema = df.schema def schemaMatchP(schema: StructType) : Map[String,List[Int]] = schema // get the 1st word (column type) in upp

我试图创建一个函数,将列的名称从dataframe模式中提取出来。所以我定义的是初始函数:

  val df = sqlContext.parquetFile(inputVal.toString)
  val dfSchema = df.schema
def schemaMatchP(schema: StructType) : Map[String,List[Int]] =
      schema
        // get the 1st word (column type) in upper cases
        .map(columnDescr => columnDescr
如果我这样做:

.map(columnDescr => columnDescr.toString.split(',')(0).toUpperCase)
我将获得STRUCTFIELD(HH_CUST_GRP_MBRP_ID,BINARYTYPE,TRUE)


如何处理StructField,以便从模式的每列中提取第一个元素。因此,我的列名是:HH_CUST_GRP_MBRP_ID等等。

如果有疑问,请查看源代码本身的功能。答案是:)
StructField
是一个带有
name
属性的case类。所以,只要做:

schema.map(f => s"${f.name}")