【发布时间】:2017-03-12 21:00:17
【问题描述】:
我正在尝试使用 count() 方法计算以下 RDD 元素。第一种如下:
scala> val data_wo_header=dropheader(data)
data_wo_header: org.apache.spark.rdd.RDD[String]
当我依靠这个时,我得到:
scala> data_wo_header.count()
res1: Long = 20000263
这个操作比较快,大约需要26秒
现在我将 RDD 转换如下:
scala> val ratings_split = data_wo_header.map(line => line.split(",")).persist()
ratings_split: org.apache.spark.rdd.RDD[Array[String]]
scala> ratings_split.count()
res2: Long = 20000263
此计数大约需要 5 分钟。有人可以提出为什么阅读计数的时间如此显着增加吗?
drop header 函数看起来像这样只是为了删除第一行:
def dropheader(data: RDD[String]): RDD[String] = {
data.mapPartitionsWithIndex((idx, lines) => {
if (idx == 0) {
lines.drop(1)
}
lines
})
}
data 只是val data = sc.textFile(file, 2).cache()
【问题讨论】:
标签: scala apache-spark rdd