📅  最后修改于: 2023-12-03 14:51:46.310000             🧑  作者: Mango
在Spark中,RDD(弹性分布式数据集)是一种不可变的分布式数据集合。而数据框(DataFrame)则是一种基于RDD的分布式数据集合,类似于数据库中的表格形式。但是,数据框相比于RDD有更加强大的数据处理和查询能力。
在这篇文章中,我们将会介绍如何从RDD中创建数据框,并演示一些常用的操作方法。
首先,我们需要创建一个RDD。在这个示例中,我们将创建由一系列元组组成的RDD,每个元组包含一个人的姓名、年龄、性别和工资。
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("RDD to DataFrame").getOrCreate()
data_list = [("Alice", 25, "F", 5000),
("Bob", 30, "M", 7000),
("Charlie", 35, "M", 9000),
("David", 40, "M", 12000)]
data_rdd = spark.sparkContext.parallelize(data_list)
接下来,我们可以将RDD转化为数据框。Spark提供了一个特殊的方法createDataFrame()
来创建数据框。该方法需要两个参数:第一个是RDD本身,第二个是数据框的模式。
from pyspark.sql.types import StructType, StructField, StringType, IntegerType
schema = StructType([
StructField("Name", StringType(), True),
StructField("Age", IntegerType(), True),
StructField("Gender", StringType(), True),
StructField("Salary", IntegerType(), True)
])
data_df = spark.createDataFrame(data_rdd, schema)
data_df.show()
执行以上代码,我们将得到以下输出:
+-------+---+------+------+
| Name|Age|Gender|Salary|
+-------+---+------+------+
| Alice| 25| F| 5000|
| Bob| 30| M| 7000|
|Charlie| 35| M| 9000|
| David| 40| M| 12000|
+-------+---+------+------+
现在我们已经将RDD转换成了数据框,可以开始使用各种数据处理和查询操作了。以下是一些常用的操作:
使用printSchema()
方法可以查看数据框的模式。
data_df.printSchema()
执行以上代码,我们将得到以下输出:
root
|-- Name: string (nullable = true)
|-- Age: integer (nullable = true)
|-- Gender: string (nullable = true)
|-- Salary: integer (nullable = true)
使用select()
方法可以选取一列或多列。该方法需要传入列的名称。
data_df.select("Name", "Salary").show()
执行以上代码,我们将得到以下输出:
+-------+------+
| Name|Salary|
+-------+------+
| Alice| 5000|
| Bob| 7000|
|Charlie| 9000|
| David| 12000|
+-------+------+
使用filter()
方法可以根据某个条件过滤行。该方法需要传入一个布尔表达式。
data_df.filter(data_df.Age > 30).show()
执行以上代码,我们将得到以下输出:
+-------+---+------+------+
| Name|Age|Gender|Salary|
+-------+---+------+------+
|Charlie| 35| M| 9000|
| David| 40| M| 12000|
+-------+---+------+------+
使用groupBy()
方法可以实现分组汇总,该方法需要传入分组的列名称。
data_df.groupBy("Gender").sum("Salary").show()
执行以上代码,我们将得到以下输出:
+------+-----------+
|Gender|sum(Salary)|
+------+-----------+
| F| 5000|
| M| 28000|
+------+-----------+
在这篇文章中,我们介绍了从RDD创建数据框的方法。我们还演示了一些数据框的基本操作方法,包括查看模式、选取列、过滤行和分组汇总。熟练掌握这些操作将使您更加高效地进行数据处理和查询。