【问题标题】:Two different join on same table Pyspark同一张表Pyspark上的两个不同连接
【发布时间】:2020-10-21 08:20:11
【问题描述】:

我有两个数据框 df 和买家。 我需要对它们应用两种不同类型的连接 innerleftanti 并从 leftanit 中抽取 1% 的样本,然后将这两个结果合并。我尝试了以下

buyr = df.join(buyers,on=['key'],how='inner')
non_buyr = df.join(buyers,on=['key'],how='leftanti')
onepct = non_buyr.sample(False,0.01,seed=100)
df_final = buyr.unionAll(onepct)

但由于这个原因,我们有两个 df 阶段,731 分区的每个阶段大约需要 4 小时才能完成

有没有什么方法可以在一个步骤中执行内部和左反连接,而不是两个或任何其他有效的方法来执行相同的操作?

【问题讨论】:

    标签: python python-3.x join pyspark


    【解决方案1】:

    Inner + Left anti 等于一个简单的 Left join。 然后,您可以过滤F.col("buyers.key").isNotNull() # The innerF.col("buyers.key").isNull() # The left anti所在的行。

    【讨论】:

      猜你喜欢
      • 2012-05-04
      • 2015-05-18
      • 2015-07-24
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多