我正在尝试使用来自Spark Streaming的数据以Parquet格式写入磁盘。
我使用以下方式获得较慢的写入结果:
val stream = ssc.receiverStream(...)
stream.foreachRDD { rdd =>
if (rdd.count() > 0) {
// Get the singleton instance of SQLContext
val sqlContext = SQLContext.getOrCreate(rdd.sparkContext)
import sqlContext.implicits._
// Save models in Parquet format.
rdd.toDF()
.write.mode(SaveMode.Append)
.parquet("../myfile")
}
}
我将这与将相同的数据集一次读入内存然后使用Spark一次到磁盘进行比较,而不是使用流式方法的上述方法。
有谁能告诉我为什么并给出解决方案?