【发布时间】:2020-12-25 13:44:21
【问题描述】:
我正在连接两个具有相同名称和值的数据框。
数据是:
+----------------+------------------+
|id |name |
+----------------+------------------+
|2 |G2 |
|1 |H2 |
|2 |H2 |
|1 |G2 |
+----------------+------------------+
代码是:
res = data.alias(
"C1"
).join(
data.alias(
"C2"
),
on='id',
how="inner"
).select(
F.col("C1.{0}".format(name)).alias("C1"),
F.col("C2.{0}".format(name)).alias("C2"),
'id'
)
我得到的结果是:
+----+----+----------------+
|C1 |C2 |id |
+----+----+----------------+
|G2 |H2 |2 |
|G2 |G2 |2 |
|H2 |G2 |1 |
|H2 |H2 |1 |
|H2 |H2 |2 |
|H2 |G2 |2 |
|G2 |G2 |1 |
|G2 |H2 |1 |
+----+----+----------------+
而对于内部连接,我期望结果为:
+----------------+------------------+
|id |C1 | C2 |
+----------------+------------------+
|2 |G2 | G2 |
|1 |H2 | H2 |
|2 |H2 | H2 |
|1 |G2 | G2 |
+----------------+------------------+
为什么我得到的结果是 8 行而不是上述 4 行的联合。
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql