【问题标题】:When performing a join in spark, can you use join statement conditions to filter rows from shuffling?在 spark 中执行 join 时,可以使用 join 语句条件来过滤行而不是 shuffle 吗?
【发布时间】:2021-08-02 20:35:16
【问题描述】:

假设我有以下连接语句:

leftTable.join(
    rightTable,
    leftTable(joinColumn) =!= null and leftTable(joinColumn) === rightTable(joinColumn),
    "left_outer"
)

spark 是否会在 leftTable 的连接列中对具有空值的行进行随机排序?

我最近遇到了一个偏差,并试图确定它是否可能是因为 null 值。因此,在这种情况下,我想知道 spark 是否在改组之前评估它可以执行的任何连接语句以最小化改组,或者它是否首先改组并在匹配两个表时评估所有内容。

【问题讨论】:

    标签: apache-spark join partitioning skew


    【解决方案1】:

    如果不影响您的功能,您可以简单地在 leftTable 数据框上添加过滤器。

    leftTable
    .where(leftTable(joinColumn) =!= null)
    .join(
        rightTable,
        leftTable(joinColumn) === rightTable(joinColumn),
        "left_outer"
    )
    

    【讨论】:

    • 它确实会影响我的功能,我们正在对流数据进行大量丰富,我们无法过滤/删除任何行
    猜你喜欢
    • 2012-05-02
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2013-04-10
    • 2021-09-12
    相关资源
    最近更新 更多