从 Apache Spark 中的模式获取数据类型列表
Get list of data types from schema in Apache Spark
我在 Spark-Python 中有以下代码从 DataFrame 的模式中获取名称列表,它工作正常,但我如何获取数据类型列表?
columnNames = df.schema.names
例如:
columnTypes = df.schema.types
是否有任何方法可以获取 DataFrame 架构中包含的数据类型的单独列表?
这里有一个建议:
df = sqlContext.createDataFrame([('a', 1)])
types = [f.dataType for f in df.schema.fields]
types
> [StringType, LongType]
参考:
由于问题标题不是python-specific,我将在此处添加scala
版本:
val types = df.schema.fields.map(f => f.dataType)
它会产生一个 org.apache.spark.sql.types.DataType
的数组。
使用schema.dtypes
scala> val df = Seq(("ABC",10,20.4)).toDF("a","b","c")
df: org.apache.spark.sql.DataFrame = [a: string, b: int ... 1 more field]
scala>
scala> df.printSchema
root
|-- a: string (nullable = true)
|-- b: integer (nullable = false)
|-- c: double (nullable = false)
scala> df.dtypes
res2: Array[(String, String)] = Array((a,StringType), (b,IntegerType), (c,DoubleType))
scala> df.dtypes.map(_._2).toSet
res3: scala.collection.immutable.Set[String] = Set(StringType, IntegerType, DoubleType)
scala>
我在 Spark-Python 中有以下代码从 DataFrame 的模式中获取名称列表,它工作正常,但我如何获取数据类型列表?
columnNames = df.schema.names
例如:
columnTypes = df.schema.types
是否有任何方法可以获取 DataFrame 架构中包含的数据类型的单独列表?
这里有一个建议:
df = sqlContext.createDataFrame([('a', 1)])
types = [f.dataType for f in df.schema.fields]
types
> [StringType, LongType]
参考:
由于问题标题不是python-specific,我将在此处添加scala
版本:
val types = df.schema.fields.map(f => f.dataType)
它会产生一个 org.apache.spark.sql.types.DataType
的数组。
使用schema.dtypes
scala> val df = Seq(("ABC",10,20.4)).toDF("a","b","c")
df: org.apache.spark.sql.DataFrame = [a: string, b: int ... 1 more field]
scala>
scala> df.printSchema
root
|-- a: string (nullable = true)
|-- b: integer (nullable = false)
|-- c: double (nullable = false)
scala> df.dtypes
res2: Array[(String, String)] = Array((a,StringType), (b,IntegerType), (c,DoubleType))
scala> df.dtypes.map(_._2).toSet
res3: scala.collection.immutable.Set[String] = Set(StringType, IntegerType, DoubleType)
scala>