Python 使用其他数据帧的条件从pyspark数据帧提取数据

Python 使用其他数据帧的条件从pyspark数据帧提取数据,python,dataframe,hadoop,join,pyspark,Python,Dataframe,Hadoop,Join,Pyspark,我有一个pysprak数据帧,需要根据 其他2个单列数据帧。我尝试过使用join,但是由于数据量太大,速度太慢了。 我曾想过在spark中使用分区或查找(),但由于我是pyspark新手,所以无法实现这些功能。 请建议我如何有效地做到这一点。 以下是示例数据帧: main dataframe: df1 = DataFrame({'CID': ['A0', 'A1', 'A2', 'A3'],'Name': ['B7', 'B4', 'B0', 'B3'],'Group':[23,34,45

我有一个pysprak数据帧,需要根据 其他2个单列数据帧。我尝试过使用join,但是由于数据量太大,速度太慢了。 我曾想过在spark中使用分区或查找(),但由于我是pyspark新手,所以无法实现这些功能。 请建议我如何有效地做到这一点。 以下是示例数据帧:

main dataframe:

  df1 = DataFrame({'CID': ['A0', 'A1', 'A2', 'A3'],'Name': ['B7', 'B4', 'B0', 'B3'],'Group':[23,34,45,67]})

conditional dataframes:

  df2 = DataFrame({'CID': ['A4', 'A3', 'A7', 'A8']})

  df3=Dataframe({'Group':[33,42,66,90]})

我试着加入,但效率很低

df1=df1.join(df2,df1.CID==df2.CID)


df1=df1.join(df3,df1.Group==df3.Group)

提前谢谢

我能想到的唯一方法就是加入数据帧。以下是一些使连接高效的技巧-

  • 如果df2和df3的大小较小,则广播它们
  • 根据联接键和联接前的重新分区对数据帧进行排序