PySpark如何从Dataframe架构的StructType对象解析并获取字段名称

时间:2018-10-24 08:00:13

标签: apache-spark struct pyspark apache-spark-sql schema

我已经从Hive Table创建了Dataframe,并且想要检索字段/列名称。

>>>a=df.schema
>>>a
StructType(List(StructField(empid, IntegerType, true), StructField(empname,StringType, true)))

如何从该对象中检索字段名称(empid,empname)。

2 个答案:

答案 0 :(得分:0)

使用pyspark.sql.types.StructType.fieldnames

  

fieldNames()

     

返回列表中的所有字段名称。

>>> struct = StructType([StructField("f1", StringType(), True)])
>>> struct.fieldNames()
['f1']

答案 1 :(得分:-1)

您还可以使用df.columns将列名作为列表获取。

>>> spark.version
u'2.4.0.cloudera2'
>>>
>>> df=spark.sql("select 10 empid, 's' empname from range(1)")
>>> df.schema
StructType(List(StructField(empid,IntegerType,false),StructField(empname,StringType,false)))
>>> df.schema.fieldNames()
['empid', 'empname']
>>> df.columns
['empid', 'empname']
>>>