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