问题描述
我在集群模式下运行 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 中进行分区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!