欢迎访问宙启技术站
智能推送

pyspark.sql中如何对DataFrame进行连接和合并操作

发布时间:2023-12-18 23:44:08

在pyspark.sql中,可以使用join函数对DataFrame进行连接操作,也可以使用union函数对DataFrame进行合并操作。

1. 连接操作:

连接操作可以将两个DataFrame按照某种条件进行连接,生成一个新的DataFrame。

使用的函数是join函数,其语法如下:

DataFrame.join(other, on=None, how=None)

- DataFrame:要连接的 个DataFrame。

- other:要连接的第二个DataFrame。

- on:连接条件,可以是一个列名字符串,也可以是一个包含列名的列表。

- how:连接方式,默认为inner,可以选择inner、outer、left、right。

连接操作的示例代码如下:

from pyspark.sql import SparkSession

# 创建SparkSession
spark = SparkSession.builder.getOrCreate()

# 创建DataFrame1
data1 = [("Alice", 28), ("Bob", 35), ("Charlie", 32)]
df1 = spark.createDataFrame(data1, ["name", "age"])

# 创建DataFrame2
data2 = [("Alice", "Engineer"), ("Bob", "Doctor"), ("Dave", "Lawyer")]
df2 = spark.createDataFrame(data2, ["name", "profession"])

# 连接DataFrame1和DataFrame2
df3 = df1.join(df2, on="name", how="inner")

# 显示结果
df3.show()

输出结果为:

+------+---+----------+
|  name|age|profession|
+------+---+----------+
| Alice| 28|  Engineer|
|   Bob| 35|    Doctor|
+------+---+----------+

2. 合并操作:

合并操作可以将两个DataFrame进行合并,生成一个新的DataFrame。

使用的函数是union函数,其语法如下:

DataFrame.union(other)

- DataFrame:要合并的 个DataFrame。

- other:要合并的第二个DataFrame。

合并操作的示例代码如下:

from pyspark.sql import SparkSession

# 创建SparkSession
spark = SparkSession.builder.getOrCreate()

# 创建DataFrame1
data1 = [("Alice", 28), ("Bob", 35), ("Charlie", 32)]
df1 = spark.createDataFrame(data1, ["name", "age"])

# 创建DataFrame2
data2 = [("Dave", 25), ("Eve", 40)]
df2 = spark.createDataFrame(data2, ["name", "age"])

# 合并DataFrame1和DataFrame2
df3 = df1.union(df2)

# 显示结果
df3.show()

输出结果为:

+-------+---+
|   name|age|
+-------+---+
|  Alice| 28|
|    Bob| 35|
|Charlie| 32|
|   Dave| 25|
|    Eve| 40|
+-------+---+

以上就是pyspark.sql中对DataFrame进行连接和合并操作的方法和示例。