首页 > 解决方案 > 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。

那么,我错过了什么?

标签: apache-sparkapache-spark-sql

解决方案


这可确保并非所有数据都被带回 SPARK。

是的,确实如此,但是

val df = sparkr.read.jdbc(url, "mytab", ...)

df.where($"day" === "2016-11-25" and $"hour" === 10)

也应该,只要不需要强制转换,不管版本(1.4 前)。


推荐阅读