我在PySpark上有一个星火PySpark,我想将它的模式存储到另一个火花DataFrame中。
例如:我有一个样本DataFrame df,看起来像是-
+---+-------------------+
| id| v|
+---+-------------------+
| 0| 0.4707538108432022|
| 0|0.39170676690905415|
| 0| 0.8249512619546295|
| 0| 0.3366111661094958|
| 0| 0.8974360488327017|
+---+-------------------+我可以通过以下方式查看df的模式
df.printSchema()
root
|-- id: integer (nullable = true)
|-- v: double (nullable = false)我需要的是一个DataFrame,它在df上以col_name和dtype两列显示上面的信息。
预期产出:
+---------+-------------------+
| col_name| dtype|
+---------+-------------------+
| id| integer|
| v| double|
+---------+-------------------+我怎样才能做到这一点?我找不到关于这件事的任何东西。谢谢。
发布于 2019-10-23 16:53:58
最简单的事情是从df.dtypes创建一个数据格式
spark.createDataFrame(df.dtypes, ["col_name", "dtype"]).show()
#+--------+------+
#|col_name| dtype|
#+--------+------+
#| id| int|
#| v|double|
#+--------+------+但是,如果希望dtype列如printSchema中所示,则可以通过df.schema来实现
spark.createDataFrame(
[(d['name'], d['type']) for d in df.schema.jsonValue()['fields']],
["col_name", "dtype"]
).show()
#+--------+-------+
#|col_name| dtype|
#+--------+-------+
#| id|integer|
#| v| double|
#+--------+-------+https://stackoverflow.com/questions/58527427
复制相似问题