使用其他数据框中的条件从pyspark数据框中提取数据

时间:2019-10-14 09:02:13

标签: python dataframe hadoop join pyspark

我有一个pysprak数据框,并且需要根据以下条件从中提取选定的行: 其他2个单列数据框。我尝试使用连接,但由于数据量太大,连接速度太慢。 我想到了在spark中使用partitioning或lookup(),但是由于我是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)

谢谢!

1 个答案:

答案 0 :(得分:0)

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

  1. 广播df2和df3(如果它们的大小很小)。
  2. 在加入之前,根据加入键和重新分区对数据帧进行排序。