[
https://issues.apache.org/jira/browse/SPARK-19233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15831098#comment-15831098
]
Nan Zhu commented on SPARK-19233:
---------------------------------
By filtering generatedRDDs, I may bring some confusion here, what I propose is
1. Add a latestCheckpointTime in DStreamCheckpointData
2. when update() is called, only put RDDs with the timestamp <=
latestCheckpointTime to currentCheckpointFiles
(https://github.com/CodingCat/spark/blob/65623f4408ab6152719046c55093c70435da82c8/streaming/src/main/scala/org/apache/spark/streaming/dstream/DStreamCheckpointData.scala#L53)
What do you think?
Regarding correctness, until so far, I haven't seen applications die because of
this issue. But when I analyzed log with some simple script/re to see whether
(some lines of) DStream.compute() is called, I was always confused...since I
assume checkpoint-1000 will always call compute(time > 1000)
> Inconsistent Behaviour of Spark Streaming Checkpoint
> ----------------------------------------------------
>
> Key: SPARK-19233
> URL: https://issues.apache.org/jira/browse/SPARK-19233
> Project: Spark
> Issue Type: Improvement
> Components: DStreams
> Affects Versions: 2.0.0, 2.0.1, 2.0.2, 2.1.0
> Reporter: Nan Zhu
>
> When checking one of our application logs, we found the following behavior
> (simplified)
> 1. Spark application recovers from checkpoint constructed at timestamp 1000ms
> 2. The log shows that Spark application can recover RDDs generated at
> timestamp 2000, 3000
> The root cause is that generateJobs event is pushed to the queue by a
> separate thread (RecurTimer), before doCheckpoint event is pushed to the
> queue, there might have been multiple generatedJobs being processed. As a
> result, when doCheckpoint for timestamp 1000 is processed, the generatedRDDs
> data structure containing RDDs generated at 2000, 3000 is serialized as part
> of checkpoint of 1000.
> It brings overhead for debugging and coordinate our offset management
> strategy with Spark Streaming's checkpoint strategy when we are developing a
> new type of DStream which integrates Spark Streaming with an internal message
> middleware.
> The proposed fix is to filter generatedRDDs according to checkpoint timestamp
> when serializing it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]