本文介绍了通过 JDBC 从 RDBMS 读取时在 spark 中进行分区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在集群模式下运行 spark 并通过 JDBC 从 RDBMS 读取数据.

I am running spark in cluster mode and reading data from RDBMS via JDBC.

根据 Spark docs,这些分区参数描述了从多个worker并行读取时如何对表进行分区:

As per Spark docs, these partitioning parameters describe how to partition the table when reading in parallel from multiple workers:

  • partitionColumn
  • lowerBound
  • upperBound
  • numPartitions

这些是可选参数.

如果我不指定这些会发生什么:

What would happen if I don't specify these:

  • 只有 1 个工作人员读取了整个数据?
  • 如果它仍然是并行读取,它如何对数据进行分区?

推荐答案

如果没有指定 {partitionColumn, lowerBound, upperBound>、numPartitions} 或 {predicates} Spark 将使用单个执行程序并创建单个非空分区.所有数据都将使用单个事务处理,读取既不会分布式也不会并行.

If you don't specify either {partitionColumn, lowerBound, upperBound, numPartitions} or {predicates} Spark will use a single executor and create a single non-empty partition. All data will be processed using a single transaction and reads will be neither distributed nor parallelized.

另见:

这篇关于通过 JDBC 从 RDBMS 读取时在 spark 中进行分区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 16:07