apache-spark - SPARK 数据源 V2 API 澄清过滤器下推
问题描述
我一直在阅读 Data Source V2 API 和 Filter Pushdown(可能还有 Partition Pruning)。在示例中,有人谈到下推到 mySQL。
好的,我不清楚。我在这里和那里看到了关于数据源 V2 API 的讨论(例如,在Exploring Spark DataSource V2 - Part 4 : In-Memory DataSource with Partitioning 中)。一切都很好,但是正如答案所述,我已经可以为 mySQL 下推了。讨论以某种方式暗示了相反的意思——所以我显然错过了一点——沿着这条线的某个地方,我想知道是什么。
我的问题/观察是我已经可以为 JDBC 源(例如 mySQL)执行过滤器下推。例如如下:
sql = "(select * from mytab where day = 2016-11-25 and hour = 10) t1"
这可确保并非所有数据都被带回 SPARK。
那么,我错过了什么?
解决方案
这可确保并非所有数据都被带回 SPARK。
是的,确实如此,但是
val df = sparkr.read.jdbc(url, "mytab", ...)
df.where($"day" === "2016-11-25" and $"hour" === 10)
也应该,只要不需要强制转换,不管版本(1.4 前)。
推荐阅读
- wpf - Prism 6.3:重用具有不同视图模型的视图
- java - 使用 Java 库删除 Google 日历自定义属性
- memory - 如何在没有源代码的情况下在内存中查找变量位置?
- python-3.x - 函数对执行速度有什么影响?
- javascript - 将值从 serializeArray 转换为 Integer
- powershell - Powershell 获取窗口名称和发送键
- java - 日期时间解析异常;无法在索引 4 处解析文本“2018-10-18 00:00:00”
- node.js - Node.js + Express - 如何在 res.on 事件中获取 res 数据以进行日志记录
- c# - 如何检查 SqlBulkCopy 上的列映射?
- python-3.x - Twisted 在 Python3 上的真实现状是什么?