簡體   English   中英

將 Spark DataFrame 的架構轉換為另一個 DataFrame

[英]Convert schema of a Spark DataFrame to another DataFrame

我在 PySpark 上有一個 Spark DataFrame,我想將其架構存儲到另一個 Spark 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 ,它在col_namedtype兩列中顯示有關df的上述信息。

預期 Output:

+---------+-------------------+
| col_name|              dtype|
+---------+-------------------+
|       id|            integer|
|        v|             double|
+---------+-------------------+

我如何實現這一目標? 我找不到有關此的任何信息。 謝謝。

最簡單的方法是從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|
#+--------+-------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM