在PySpark中加入多个列

时间:2015-08-24 23:49:30

标签: python join pyspark pyspark-sql

我想加入两个具有共同列名的DataFrame。

我的DataFrames如下:

>>> sample3
DataFrame[uid1: string, count1: bigint]
>>> sample4
DataFrame[uid1: string, count1: bigint]


sample3
     uid1  count1
0  John         3
1  Paul         4
2  George       5

sample4
     uid1  count1
0  John         3
1  Paul         4
2  George       5

(我正在使用具有不同名称的相同DataFrame)

我查看了JIRA issue 7197 for Spark,他们讨论了如何执行此连接(这与PySpark文档不一致)。但是,他们提出的方法会产生重复的列:

>>> cond = (sample3.uid1 == sample4.uid1) & (sample3.count1 == sample4.count1)
>>> sample3.join(sample4, cond)
DataFrame[uid1: string, count1: bigint, uid1: string, count1: bigint]

我想得到一个键不会出现两次的结果。

我可以用一列来做到这一点:

>>>sample3.join(sample4, 'uid1')
DataFrame[uid1: string, count1: bigint, count1: bigint]

但是,相同的语法不适用于此连接方法并抛出错误。

我想得到结果:

DataFrame[uid1: string, count1: bigint]

我想知道这怎么可能

1 个答案:

答案 0 :(得分:0)

您可以根据您的情况定义连接cond使用键列表:

  

sample3.join(sample4,[' uid1',' count1'])