📜  如何将字典列表转换为 Pyspark DataFrame ?(1)

📅  最后修改于: 2023-12-03 14:53:03.809000             🧑  作者: Mango

如何将字典列表转换为 Pyspark DataFrame?

如果你在使用 Pyspark,通常需要将数据转换为 DataFrame,但是可能会遇到需要将字典列表转换为 DataFrame 的情况。在本文中,我们将介绍如何将字典列表转换为 Pyspark DataFrame。

什么是字典列表?

字典列表是一个由多个字典组成的列表,每个字典中包含了多个键-值对。例如,下面是一个包含两个字典的字典列表:

[{'name': 'Alice', 'age': 30, 'gender': 'female'}, {'name': 'Bob', 'age': 25, 'gender': 'male'}]
如何将字典列表转换为 Pyspark DataFrame?

要将字典列表转换为 Pyspark DataFrame,我们可以使用 SparkSession.createDataFrame() 方法。该方法接受两个参数:

  • 一个字典列表;
  • Pyspark 中的结构化数据类型,也就是定义 DataFrame 的列和类型的 schema。

对于第二个参数,我们可以使用 Pyspark.sql.types 模块中的 StructType 类定义 schema。例如,如果我们的字典列表包含了三个键-值对:'name'、'age' 和 'gender',我们可以使用下面的代码定义 schema:

from pyspark.sql.types import StructType, StructField, StringType, IntegerType

schema = StructType([
    StructField('name', StringType(), True),
    StructField('age', IntegerType(), True),
    StructField('gender', StringType(), True)
])

接着,我们可以使用 SparkSession.createDataFrame() 方法将字典列表转换为 DataFrame:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('example').getOrCreate()

dict_list = [{'name': 'Alice', 'age': 30, 'gender': 'female'}, {'name': 'Bob', 'age': 25, 'gender': 'male'}]

df = spark.createDataFrame(dict_list, schema)

最后,我们可以使用 DataFrame.show() 方法查看 DataFrame 的内容:

df.show()

输出结果为:

+-----+---+------+
| name|age|gender|
+-----+---+------+
|Alice| 30|female|
|  Bob| 25|  male|
+-----+---+------+
总结

本文介绍了如何将字典列表转换为 Pyspark DataFrame。首先,我们定义了一个包含多个键-值对的字典列表;然后,使用 PySpark 中的 StructType 类定义 schema,最后使用 SparkSession.createDataFrame() 方法将字典列表转换为 DataFrame。