我对numPartitions
以下方法中参数的行为感到困惑:
DataFrameReader.jdbc
Dataset.repartition
关于参数的官方文档如下DataFrameReader.jdbc
numPartitions
numPartitions:分区数。这与 lowerBound(包括)、upperBound(不包括)一起形成了用于生成的 WHERE 子句表达式的分区步长,这些表达式用于均匀地拆分列 columnName。
和官方文档Dataset.repartition
说
返回具有完全
numPartitions
分区的新数据集。
我目前的理解:
- 方法中的
numPartition
参数DataFrameReader.jdbc
控制从数据库中读取数据的并行度 - 中的
numPartition
参数Dataset.repartition
控制将其写入磁盘时将生成的输出文件的数量DataFrame
我的问题:
- 如果我
DataFrame
通过读取DataFrameReader.jdbc
然后将其写入磁盘(不调用repartition
方法),那么输出中的文件是否仍然与我DataFrame
在调用磁盘后将其写入磁盘一样多repartition
? - 如果上述问题的答案是:
- 是的:那么在使用方法(带参数)读取
repartition
的方法上调用方法是多余的吗?DataFrame
DataFrameReader.jdbc
numPartitions
- 否:那么请纠正我理解的失误。同样在这种情况下,方法的
numPartitions
参数不应该DataFrameReader.jdbc
被称为“并行”之类的东西吗?
- 是的:那么在使用方法(带参数)读取