如何修复textfilestream代码的空输出

时间:2019-01-19 13:47:51

标签: scala apache-spark spark-streaming

 object abc {

  def main(args: Array[String]) = {
    m()
  }

  def m() {
    val spark = SparkSession.builder.appName("ola").master("local[*]").getOrCreate
    val sc = spark.sparkContext
    val ssc = new StreamingContext(sc, Seconds(5))
    var cnt = sc.longAccumulator("cnt")
    cnt.value

    import spark.implicits._
    val x = ssc.textFileStream("file:///home/xyz/folderone/")

    x.foreachRDD{ rddx =>
      val x2 = rddx.map { xxx =>
        cnt.add(1)
        xxx
      }
      x2.toDF.write.format("text").mode("overwrite").save("file:///home/xyz/oparekta")
    }
    println(s"value of count ${cnt.value}")
    ssc.start()
    ssc.awaitTermination()

  }

以上代码是处理给定文件夹路径中的文件,但是代码中存在某种问题,导致输出文件为空,这可能是什么原因?

1 个答案:

答案 0 :(得分:0)

尝试执行以下操作以避免处理空数据:

...
QS.foreachRDD(q => {
    if(!q.isEmpty) {   
...

此外,需要考虑附加的覆盖。不确定您的用例,可能是一个疏忽。