Scala 使用Spark流媒体写入磁盘

Scala 使用Spark流媒体写入磁盘,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,我正在尝试使用Spark Streaming中的数据以拼花格式写入磁盘 我使用以下方法获得缓慢的写入结果: val stream = ssc.receiverStream(...) stream.foreachRDD { rdd => if (rdd.count() > 0) { // Get the singleton instance of SQLContext val sqlContext = SQLContext.getOrCrea

我正在尝试使用Spark Streaming中的数据以拼花格式写入磁盘

我使用以下方法获得缓慢的写入结果:

 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一次读入磁盘进行了比较,这与上面使用流方法的情况相反


有人能告诉我原因并给出解决方案吗?

你所说的糟糕的书写结果是什么意思?你的流媒体播放间隔是多少?@PatrickMcGloin我已经尝试了1秒到20秒。在任何情况下,它都比使用没有Spark参与的文本文件要花更长的时间来编写。拼花地板是压缩的,所以它应该比文本转储要花更长的时间来编写,或者我认为是这样