📜  从嵌套字典创建 PySpark 数据框(1)

📅  最后修改于: 2023-12-03 15:06:35.352000             🧑  作者: Mango

从嵌套字典创建 PySpark 数据框

PySpark是用Python编写的Apache Spark API。它在分布式计算中使用内存进行高速计算,可以很容易地处理大数据:从处理,到机器学习和深度学习都能胜任。本文将介绍如何从嵌套字典创建 PySpark 数据框。

步骤1:导入PySpark

在使用PySpark之前,请先将Pyspark库导入到Python代码中。在Python程序中添加以下代码:

from pyspark.sql import SparkSession

这将导入SparkSession类,它是Spark的主要入口点。

步骤2:创建SparkSession对象

SparkSession是与Spark进行交互的入口,它可以用于创建数据框。使用以下代码创建SparkSession对象:

spark = SparkSession.builder.appName("nested_dict_to_df").getOrCreate()
步骤3:创建嵌套字典
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'address': [{'city': 'New York', 'state': 'NY'}, {'city': 'Chicago', 'state': 'IL'}, {'city': 'Los Angeles', 'state': 'CA'}]}

可以看到,数据是一个嵌套字典。其中,'name'和'age'是简单的键值对,而'address'是包含嵌套字典的列表。

步骤4:创建 PySpark 数据框

首先创建一个名为data_df的值为None的数据框,并使用数据框的read方法从Python字典对象data中读取数据,并将结果存储在data_df中:

data_df = None
data_df = spark.createDataFrame(data_df, schema=['name', 'age', 'address'])
data_df.show()

使用createDataFrame()方法将Python字典转换为 PySpark 数据框。列名应与数据中的列名相同。

使用show()方法可以查看数据框中的数据。

步骤5:数据框中有列表的嵌套字典

由于数据框中的'address'列包含列表及其嵌套的字典,因此需要将其转换为PySpark行,即行可以使用Spark DataFrame中的所有功能。在这种情况下,使用.getItem()方法从列表中访问字典中的值。

data_df = data_df.select('name', 'age', data_df['address'].getItem(0)['city'].alias('city'), data_df['address'].getItem(0)['state'].alias('state'))

data_df.show()

注意,getItem(0)将返回列表中的字典。我们可以使用getItem()方法获取字典中的键值。使用.alias()方法创建别名以便于识别新创建的列的名称。

步骤6:使用完毕关闭 SparkSession
spark.stop()

使用完毕后记得关闭SparkSession,保险起见,如果是在Jupyter Notebook中运行代码,可以使用以下的“with”代码块:

with SparkSession.builder.appName("nested_dict_to_df").getOrCreate() as spark:
    data_df = spark.createDataFrame(data, schema=['name', 'age', 'address'])
    data_df = data_df.select('name', 'age', data_df['address'].getItem(0)['city'].alias('city'), data_df['address'].getItem(0)['state'].alias('state'))
    data_df.show()

这将在完成操作后自动关闭 Spark。

到此,我们已经学会了从嵌套字典创建 PySpark 数据框的全部过程。