Spark Streaming集群可以用于缓冲数据吗?

时间:2018-11-30 08:10:13

标签: apache-spark spark-streaming

这是我第一次使用Spark流媒体。我们有一个用例,其中我们正在将10KB文件流式传输到正在处理的Spark流群集中。我们还希望将这些10 KB的传入文档合并到一个文件中,直到其大小达到30 MB,然后将该RDD上载到S3。

我想象如下,

  1. 我们将缓存RDD,该文件将不断附加传入的10 KB文档。
  2. 在执行追加操作之前,如果当前缓存的RDD的大小为30 MB,它将上传到S3并创建新的RDD并追加并以相同的名称对其进行缓存,否则将简单地追加到现有的缓存中。

这种方法行得通吗?如果我对Spark Streaming缓存的理解不正确,请更正。

1 个答案:

答案 0 :(得分:0)

您可以在Spark Streaming(Stateful TransformationsupdateStateByKey)中使用mapWithState方法

val sparkContext = new SparkContext()
val ssc = new StreamingContext(sparkContext, Duration(4000))
ssc.checkpoint("path/to/persistent/storage")

否则,以批处理间隔处理数据并将其保存到S3存储桶。之后,运行单独的作业以合并数据。