Konversikan skema Spark DataFrame ke DataFrame lain

Saya memiliki Spark DataFrame di PySpark dan saya ingin menyimpan skemanya ke Spark DataFrame lain.

Misalnya: Saya memiliki contoh DataFrame df yang terlihat seperti -

+---+-------------------+
| id|                  v|
+---+-------------------+
|  0| 0.4707538108432022|
|  0|0.39170676690905415|
|  0| 0.8249512619546295|
|  0| 0.3366111661094958|
|  0| 0.8974360488327017|
+---+-------------------+

Saya dapat melihat skema df dengan melakukan -

df.printSchema()

root
 |-- id: integer (nullable = true)
 |-- v: double (nullable = false)

Yang saya perlukan adalah DataFrame yang menampilkan informasi di atas pada df dalam dua kolom col_name dan dtype.

Hasil yang Diharapkan:

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

Bagaimana cara mencapainya? Saya tidak dapat menemukan apa pun mengenai hal ini. Terima kasih.


person K. K.    schedule 23.10.2019    source sumber
comment
memparalelkan df.dtypes   -  person pault    schedule 23.10.2019
comment
Saya mendapatkan hasil yang diinginkan dengan spark.createDataFrame(df.dtypes, [col_name, dtypes]). Terima kasih. Apa yang dimaksud dengan paralelisasi?   -  person K. K.    schedule 23.10.2019


Jawaban (1)


Hal paling sederhana adalah membuat kerangka data dari df.dtypes:

spark.createDataFrame(df.dtypes, ["col_name", "dtype"]).show()
#+--------+------+
#|col_name| dtype|
#+--------+------+
#|      id|   int|
#|       v|double|
#+--------+------+

Namun jika Anda ingin kolom dtype seperti pada printSchema, Anda dapat melakukannya melalui 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|
#+--------+-------+
person pault    schedule 23.10.2019