apache-spark - 在 spark 中执行 join 时,是否可以使用 join 语句条件来过滤行而不是 shuffle?
问题描述
假设我有以下加入语句:
leftTable.join(
rightTable,
leftTable(joinColumn) =!= null and leftTable(joinColumn) === rightTable(joinColumn),
"left_outer"
)
火花是否会在 leftTable 的连接列中对具有空值的行进行洗牌?
我最近遇到了一个偏差,并试图确定它是否可能是因为空值。因此,在这种情况下,我想知道 spark 是否在改组之前评估它可以进行的任何连接语句以最小化改组,或者它是否首先改组并在匹配两个表时评估所有内容。
解决方案
如果它不影响您的功能,您可以简单地在 leftTable 数据框上添加过滤器。
leftTable
.where(leftTable(joinColumn) =!= null)
.join(
rightTable,
leftTable(joinColumn) === rightTable(joinColumn),
"left_outer"
)
推荐阅读
- mysql - 触发器 - 如何在更新另一列时更改另一列 - MySQL
- unit-testing - CMake:将测试与构建目录中的库链接,而不是与已安装的版本
- javascript - 如何通过反应将数据从子级发送到父级?
- python - 如何捕获不是由 warnings.warn 生成的警告
- docker - Dockerfile、docker-compose 和 swarm 模式生命周期
- python-3.x - 如何刷新 Trimesh(Pyglet)查看器以查看我的网格(stl)旋转并在角度条件后中断此可视化?
- json - 使用 webpack 将 YAML 预编译为 JSON
- symfony - Symfony3.4 表单错误呈现两次
- python - 使用请求将 cURL 命令转换为 python
- vue.js - Vue 组件在第二次访问时未呈现