我是 Spark 新手,正在致力于通过 JDBC 从 Postgres 数据库表创建 DataFrame,使用spark.read.jdbc
.
我对分区选项有点困惑,特别是分区列, 下界, 上限, and 分区数.
- 文档似乎表明这些字段是可选的。
如果我不提供它们会怎样?
- Spark 如何知道如何对查询进行分区?那会有多高效呢?
- 如果我指定这些选项,如何确保分区大小大致均匀,即使分区列分布不均匀?
假设我将有 20 个执行程序,因此我将 numPartitions 设置为 20。
我的partitionColumn是一个自动递增的ID字段,假设值范围从1到2,000,000
但是,由于用户选择处理一些非常旧的数据以及一些非常新的数据,中间没有任何数据,因此大多数数据的 ID 值要么低于 100,000,要么超过 1,900,000。
我找到了一种手动指定分区边界的方法,方法是使用带有谓词参数的 jdbc 构造函数.
它允许您显式指定要插入到每个分区的“where”子句中的各个条件,从而允许您准确指定每个分区将接收的行范围。因此,如果您没有用于自动分区的均匀分布列,您可以自定义自己的分区策略。
如何使用它的示例可以在接受的答案中找到这个问题.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)