我对以下方法中numPartitions
参数的行为感到困惑:
DataFrameReader.jdbc
Dataset.repartition
官方文档中关于DataFrameReader.jdbc
的numPartitions
参数有以下说明:
numPartitions:分区数。与 lowerBound(包含)和 upperBound(不包含)一起,形成用于平均拆分 columnName 的 WHERE 子句表达式的分区步幅。
而Dataset.repartition
的官方文档则说明:
返回一个具有确切
numPartitions
个分区的新数据集。
我的现有理解:
DataFrameReader.jdbc
方法中的numPartition
参数控制从数据库读取数据的并行度。Dataset.repartition
中的numPartition
参数控制当将此DataFrame
写入磁盘时生成的输出文件数量。
我的问题:
- 如果我通过
DataFrameReader.jdbc
读取DataFrame
,然后将其写入磁盘(不调用repartition
方法),那么输出文件中是否仍会有与在对其调用repartition
后写出的DataFrame
相同数量的文件? - 如果上述问题的答案是:
- 是:那么在使用
DataFrameReader.jdbc
方法(带有numPartitions
参数)读取的DataFrame
上调用repartition
方法是否多余? - 否:请纠正我理解上的错误。此外,在这种情况下,
DataFrameReader.jdbc
方法的numPartitions
参数不应该被称为类似于“并行度”的东西吗?
- 是:那么在使用
repartition
与partitionBy
中列参数的顺序 - y2k-shubham