如何创建空的 PySpark DataFrame?


PySpark 是一个构建在 Apache Spark 之上的数据处理框架,广泛用于大规模数据处理任务。它提供了一种高效的方式来处理大数据;它具有数据处理能力。

PySpark DataFrame 是一个分布式数据集合,组织成命名列。它类似于关系数据库中的表,其中列表示特征,行表示观测值。DataFrame 可以从各种数据源创建,例如 CSV、JSON、Parquet 文件和现有的 RDD(弹性分布式数据集)。但是,有时可能需要出于各种原因创建空的 DataFrame,例如初始化模式或作为未来数据的占位符。以下是在本教程中说明的两个示例。

语法

要创建一个空的 PySpark DataFrame,我们需要遵循以下语法:

empty_df = spark.createDataFrame([], schema)

在此语法中,我们将空行列表和模式传递给 ‘createDataFrame()’ 方法,该方法返回一个空的 DataFrame。

示例

在此示例中,我们创建一个只有一个列的空 DataFrame。

#Importing necessary modules
from pyspark.sql.types import StructType, StructField, IntegerType

#creating a SparkSession object
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("EmptyDataFrame").getOrCreate()

#Defining the schema of the dataframe.
schema = StructType([StructField("age", IntegerType(), True)])

#Creating an empty dataframe.
empty_df = spark.createDataFrame([], schema)

#Printing the output.
empty_df.show()

在此示例中,首先,我们定义了一个只有一个名为 "age" 的 IntegerType 列的模式;然后,我们使用该模式创建了一个空的 DataFrame。最后,我们使用 ‘show()’ 方法显示空 DataFrame。

输出

+---+
|age|
+---+
+---+

示例

在此示例中,我们正在创建一个具有多个列的空 DataFrame。

#Importing the necessary modules.
from pyspark.sql.types import StructType, StructField, StringType, IntegerType
from pyspark.sql import SparkSession

#Creating a SparkSession object.
spark = SparkSession.builder.appName("EmptyDataFrame").getOrCreate()

#Defining the schema of the DataFrame
schema = StructType([
   StructField("col_1", StringType(), True),
   StructField("col_2", StringType(), True),
   StructField("col_3", StringType(), True),
   StructField("col_4", StringType(), True),
   StructField("col_5", StringType(), True),
   StructField("col_6", StringType(), True),
   StructField("col_7", StringType(), True),
   StructField("col_8", StringType(), True),
   StructField("col_9", StringType(), True),
   StructField("col_10", IntegerType(), True)
])

#Creating an empty DataFrame.
empty_df = spark.createDataFrame([], schema)

#Printing the output.
empty_df.show(10000) 

在此示例中,我们首先定义了一个具有十个名为 "col_1" 到 "col_10" 的 ‘StringType’ 和 ‘IntegerType’ 列的模式,然后使用该模式创建了一个空的 DataFrame。最后,我们使用 ‘show()’ 方法显示空 DataFrame,并显示许多行(10,000)以证明 DataFrame 确实是空的。

我们注意到,即使输出显示了 10,000 行,DataFrame 也是空的,因为任何列中都不存在任何值。

输出

+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
|col_1|col_2|col_3|col_4|col_5|col_6|col_7|col_8|col_9|col_10|
+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+

在本教程中,我们学习了如何使用 ‘createDataFrame()’ 方法创建空的 PySpark DataFrame。我们说明了两个示例,包括创建只有一个列的空 DataFrame,创建具有多个列的空 DataFrame。要创建空的 DataFrame,我们首先使用 ‘StructType()’ 和 ‘StructField()’ 定义一个模式,然后将其作为参数与空列表 ‘[]’ 一起传递给 ‘createDataFrame()’ 方法。这将创建一个具有指定模式的空 DataFrame。通过创建空的 PySpark DataFrame,我们可以提前设置 DataFrame 的结构,然后根据需要用数据填充它。这在处理大型数据集时非常有用,其中数据结构是预先知道的,但数据本身尚不可用。

更新于: 2023年4月10日

13K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.