我正在嘗試使用count()方法計算以下RDD元素。首先是如下:RDD [數組[字符串]]與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
這種操作比較快,需時約26sec
現在我變換了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()