Преобразование схемы Spark DataFrame в другой DataFrame - PullRequest
0 голосов
/ 23 октября 2019

У меня есть Spark DataFrame в PySpark, и я хочу сохранить его схему в другом 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, который отображает вышеуказанную информацию в df в двух столбцах col_name и dtype.

Ожидаемый результат:

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

Как мне этого добиться? Я не могу ничего найти по этому поводу. Спасибо.

1 Ответ

1 голос
/ 23 октября 2019

Самое простое было бы создать фрейм данных из 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|
#+--------+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...