首页 > 解决方案 > Spark JDBC partitionColumns 是否应该被识别为 DataFrame 分区?

问题描述

我使用partitionColumn选项来读取 3 亿行表,希望能够为我的 ETL 作业(在 Spark 3.0.1 中)实现低内存/磁盘要求。

但是,解释计划显示在开头/叶子:

+- Exchange hashpartitioning[partitionCol#1, 200), true, [id=#201]
   +- *(1) Scan JDBCRelation(table)[numPartitions=200] (partitionCol#1, time#2)...

我原以为这里不需要改组,因为partitionCol在 JDBC 选项中指定了。

完整计划中有很多事情要做,但每个窗口操作都先按列分区partitionCol,然后按其他列分区。

我试过了:

如何加入两个 JDBC 表并避免 Exchange?导致Datasource v2 分区报告接口(在 2.3.1 中修复),但也许这不会扩展到 jdbc 加载?

标签: apache-sparkpartitioning

解决方案


推荐阅读