我可以使用PySpark两次加入相同的2个数据帧吗?

时间:2017-11-15 17:12:52

标签: apache-spark pyspark spark-dataframe

我现在正在使用pySpark。我现在有2张桌子。我想加入他们两次,如下所示。

 
Table 1 (df1)

sell_product   sell_amount    buy_product   buy_amount            

apple              2            pineapple        3
pear               1            apple            4
orange             5            apple            2
 
Table 2 (df2)

product   price                

apple           $1            
pear            $2            
orange          $3       
pineapple       $4
 
Result Table

sell_product   sell_amount    sell_price        buy_product   buy_amount    buy_price            

apple              2                 $1               pineapple        3       $4
pear               1                 $2               apple            4       $1
orange             5                 $3               apple            2       $1
df_firstjoin= df1.join(df2.select(col('price').alias('sell_price')),'sell_product'=='product','inner')

df_twice= df1.firstjoin(df2.select(col('price').alias('buy_price')),'buy_product'=='product','inner')

我想知道是否有任何方法可以同时加入他们。感谢。

1 个答案:

答案 0 :(得分:0)

如果你想加两个价格'列我看不到一个连接的方法,因为你在df1(sell_product和buy_product)中使用不同的键。我能想到的唯一解决方案是不创建新的df,而是在一个管道中执行此操作。

result = df1\
.join(df2.select(col('price').alias('sell_price')),'sell_product'=='product','inner')
.join(df2.select(col('price').alias('buy_price')),'buy_product'=='product','inner')