SparkSQL:jdbc 数据源是不是有“filterPushdown”功能
Posted
技术标签:
【中文标题】SparkSQL:jdbc 数据源是不是有“filterPushdown”功能【英文标题】:SparkSQL : Is there a "filterPushdown" feature for jdbc datasourceSparkSQL:jdbc 数据源是否有“filterPushdown”功能 【发布时间】:2018-12-26 06:26:44 【问题描述】:我正在使用 Spark 2.3,并从 mysql 表中加载数据。
我想知道有没有类似于 parquet 文件的“filterPushdown”功能。
我有一个包含数百万行的大表,其中我需要加载与某些键匹配的部分数据以及时间戳 > certian_timestamp。
"where key_col in (34,35, .. ) and ts > 1539688500000"
在此之后,我需要将此数据集与另一个小表连接起来。
我可以使用“filterPushdown”和“joinPushdown”之类的东西在数据库本身中实现此操作(过滤和加入)吗? (如果存在)
【问题讨论】:
是的,过滤器会尽可能下推到源数据库。您也可以将整个查询下推到数据库,但它有一个特殊的语法。您可以在docs.databricks.com/spark/latest/data-sources/… 阅读有关它的信息 【参考方案1】:是的,过滤器下推可用于 JDBC 源,但仅适用于 Where 子句。
您可以在以下位置查看 https://docs.databricks.com/spark/latest/data-sources/sql-databases.html#push-down-a-query-to-the-database-engine
如果对于您的数据库它不起作用.. 使用以下为您实现它。
http://blog.madhukaraphatak.com/spark-datasource-v2-part-5/
希望这会有所帮助:)
干杯!
【讨论】:
以上是关于SparkSQL:jdbc 数据源是不是有“filterPushdown”功能的主要内容,如果未能解决你的问题,请参考以下文章
Spark SQL - 使用 SQL 语句使用 JDBC 加载数据,而不是表名