【发布时间】:2018-06-24 20:47:17
【问题描述】:
我对以下方法中numPartitions 参数的行为感到困惑:
DataFrameReader.jdbcDataset.repartition
DataFrameReader.jdbc的official docs关于numPartitions参数表示如下
numPartitions: 分区数。这与 lowerBound(包括)、upperBound(不包括)一起形成了用于生成的 WHERE 子句表达式的分区步幅,用于均匀地拆分列 columnName。
和official docs 中的Dataset.repartition 说
返回一个完全具有
numPartitions分区的新数据集。
我目前的理解:
-
DataFrameReader.jdbc方法中的numPartition参数控制从数据库读取数据时的并行度 -
Dataset.repartition中的numPartition参数控制输出文件的数量,当此DataFrame写入磁盘时将生成
我的问题:
- 如果我通过
DataFrameReader.jdbc读取DataFrame,然后将其写入磁盘(不调用repartition方法),那么输出中的文件是否仍与我写出@ 时一样多调用repartition后将 987654338@ 写入磁盘? - 如果上述问题的答案是:
- 是的:那么在使用
DataFrameReader.jdbc方法(带有numPartitions参数)读取的DataFrame上调用repartition方法是否多余? - 否:那么请更正我理解的错误。同样在这种情况下,
DataFrameReader.jdbc方法的numPartitions参数是否应该被称为 'parallelism'?
- 是的:那么在使用
【问题讨论】:
标签: apache-spark dataframe spark-dataframe spark-jdbc