【发布时间】:2019-06-13 15:12:21
【问题描述】:
来自 Spark 源代码:
/**
* Represents the content of the Dataset as an `RDD` of `T`.
*
* @group basic
* @since 1.6.0
*/
lazy val rdd: RDD[T] = {
val objectType = exprEnc.deserializer.dataType
rddQueryExecution.toRdd.mapPartitions { rows =>
rows.map(_.get(0, objectType).asInstanceOf[T])
}
}
mapPartitions 可能需要与首先计算 RDD 一样长的时间。所以这使得诸如
df.rdd.getNumPartitions
非常昂贵。鉴于DataFrame 是DataSet[Row] 并且DataSet 由RDD 组成,为什么需要重新映射?任何见解都值得赞赏。
【问题讨论】:
标签: scala apache-spark