如何将Dstream或RDD的内容附加到现有输出文件-Spark Streaming

时间:2019-05-09 15:39:42

标签: scala apache-spark spark-streaming

我正在研究一个简单的SparkStreaming wordcount示例,以计算从侦听TCP套接字的数据服务器接收到的文本数据中的单词数。 我想将每个不为空的Dstream的内容保存到现有文本文件中。目前,我正在使用Spark Shell。这是我的代码

我已经尝试过此代码,并且可以工作,但是它会覆盖当前文件:

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.storage.StorageLevel
import org.apache.log4j.{Level, Logger}
Logger.getRootLogger.setLevel(Level.WARN)
val ssc = new StreamingContext(sc, Seconds(2))

val lines = ssc.socketTextStream("localhost", 9999, StorageLevel.MEMORY_AND_DISK_SER)

lines.foreachRDD{ rdd => if (!rdd.isEmpty) 
//.% to check if the Dstream is empty or not  
{
rdd.saveAsTextFile("/stream_test/testLine.txt")
}
}

ssc.start()

感谢您的宝贵帮助

0 个答案:

没有答案