Apache spark 从Spark DataFrame中的架构中提取名称
我试图创建一个函数,将列的名称从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
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}")