我有一个小表(2k )记录和一个大表(5mil)记录,我需要从小表中获取所有数据,并且只从大表中匹配数据,为了实现这一点,我执行了下面的查询select /*+ broadcast(small)*/ small.* From small left outer join large,虽然查询返回正确的结果,但是当我检查查询计划时,它显示了排序合并广播散列连接。有什么限制,如果小桌子是左表,我们不能广播,然后是什么出路。
我用的是火花1.5。我有两份表格的数据:res1: org.apache.spark.sql.DataFrame = [basket_id: string,请注意,我在linkPersonItemLessThan500DF上使用的是linkPersonItemLessThan500DF,因为我打算稍后加入这两者。我现正跟进上述守则的内容如下:
val userTripletRankDF = link
我正在寻找一种快速的PySpark替代方案WHERE foo IN (SELECT baz FROM bar)
预先收集到Python列表中绝对不是一个选择,因为处理的数据帧非常大,收集相对于我提出的其他选择占用了大量的时间。因此,我想不出使用原生PySparkian where(col(bar).isin(baz))的方法,因为在这种情况下,baz必须是一个列表。,并且当在WHERE中处理大量条件时<