📜  连接两个 PySpark 数据帧(1)

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

PySpark数据框:连接两个PySpark数据框

在PySpark中,连接操作是数据分析中最常用的操作之一。连接操作可以将两个数据框合并为一个,方便我们做更复杂的数据分析。

本文将介绍如何连接两个PySpark数据框,主要包括以下内容:

  1. 连接类型:内连接、左连接、右连接和外连接

  2. 连接方法:join()和merge()

  3. 实例演示

连接类型

在PySpark中,连接类型包括内连接(inner join)、左连接(left join)、右连接(right join)和外连接(full outer join)。

  1. 内连接:返回两个数据框中的匹配行。

  2. 左连接:返回左侧数据框中的所有行以及与右侧数据框中的匹配行。

  3. 右连接:返回右侧数据框中的所有行以及与左侧数据框中的匹配行。

  4. 外连接:返回左侧和右侧数据框中的所有行,如果没有匹配行,则填充缺失值NULL。

连接方法

在PySpark中,连接方法包括join()和merge()。

  1. join():使用PySpark的join()函数连接数据框,参数包括连接类型、连接的表以及连接的键。

  2. merge():使用PySpark的merge()函数连接数据框,参数包括连接类型、连接的表以及连接的键。

实例演示

下面是一个实例演示,使用PySpark的join()函数连接数据框。

from pyspark.sql import SparkSession

# 创建SparkSession对象
spark = SparkSession.builder.appName("PySpark_Demo").getOrCreate()

# 创建数据集
df1 = spark.createDataFrame([(1, "foo"), (2, "bar"), (3, "baz")], ["id", "col1"])
df2 = spark.createDataFrame([(1, "qqq"), (2, "www"), (4, "eee")], ["id", "col2"])

# 内连接
df_inner = df1.join(df2, on="id", how="inner")
df_inner.show()

# 左连接
df_left = df1.join(df2, on="id", how="left")
df_left.show()

# 右连接
df_right = df1.join(df2, on="id", how="right")
df_right.show()

# 外连接
df_outer = df1.join(df2, on="id", how="outer")
df_outer.show()

返回结果为:

+---+----+----+
| id|col1|col2|
+---+----+----+
|  1| foo| qqq|
|  2| bar| www|
+---+----+----+

+---+----+----+
| id|col1|col2|
+---+----+----+
|  1| foo| qqq|
|  2| bar| www|
|  3| baz|null|
+---+----+----+

+---+----+----+
| id|col1|col2|
+---+----+----+
|  1| foo| qqq|
|  2| bar| www|
|  4|null| eee|
+---+----+----+

+---+----+----+
| id|col1|col2|
+---+----+----+
|  1| foo| qqq|
|  2| bar| www|
|  3| baz|null|
|  4|null| eee|
+---+----+----+

以上就是连接两个PySpark数据框的方法和例子,希望对大家有所帮助。