Apache spark 火花流->;DStream.checkpoint与SparkStreaming.checkpoint
我有Spark 1.4流媒体应用程序,它从Kafka读取数据,使用状态转换,批处理间隔为15秒 为了使用全状态转换,以及从驱动程序故障中恢复,我需要在流上下文上设置检查点 此外,在Spark 1.4文档中,他们建议将数据流检查点设置为批次间隔的5-10倍 所以我的问题是: 如果我只在spark streaming上下文上设置检查点,会发生什么?我想每个批次间隔都会检查数据流 如果我在流媒体上下文上设置检查点,以及从卡夫卡读取数据时设置: 数据流检查点(90秒) 元数据检查点的间隔是多少,数据检查点的间隔是多少(意味着数据流) 多谢各位 我想每个批次间隔都会检查数据流 否,Spark将在每个批次间隔乘以常数时检查数据。这意味着,如果批处理间隔为15秒,则每15秒的倍数将检查一次数据。例如,在有状态流的Apache spark 火花流->;DStream.checkpoint与SparkStreaming.checkpoint,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我有Spark 1.4流媒体应用程序,它从Kafka读取数据,使用状态转换,批处理间隔为15秒 为了使用全状态转换,以及从驱动程序故障中恢复,我需要在流上下文上设置检查点 此外,在Spark 1.4文档中,他们建议将数据流检查点设置为批次间隔的5-10倍 所以我的问题是: 如果我只在spark streaming上下文上设置检查点,会发生什么?我想每个批次间隔都会检查数据流 如果我在流媒体上下文上设置检查点,以及从卡夫卡读取数据时设置: 数据流检查点(90秒) 元数据检查点的间隔是多少,数据检查
mapWithState
中,可以看到批处理间隔乘以10:
private[streaming] object InternalMapWithStateDStream {
private val DEFAULT_CHECKPOINT_DURATION_MULTIPLIER = 10
}
元数据检查点的时间间隔是多少?检查点的时间间隔是多少
数据检查点(指数据流)
如果在DStream
上将检查点持续时间设置为90秒,则这将是您的检查点持续时间,这意味着每90秒数据将被检查一次。您不能直接在StreamingContext
上设置检查点持续时间,只需传递检查点目录即可。checkpoint
的重载只需要一个字符串
:
/**
* Set the context to periodically checkpoint the DStream operations for driver
* fault-tolerance.
* @param directory HDFS-compatible directory where the checkpoint
* data will be reliably stored.
* Note that this must be a fault-tolerant file system like HDFS.
*/
def checkpoint(directory: String)
编辑
对于updateStateByKey
,检查点时间似乎设置为批处理时间乘以秒(10)/slideDuration
:
// Set the checkpoint interval to be slideDuration or 10 seconds,
// which ever is larger
if (mustCheckpoint && checkpointDuration == null) {
checkpointDuration = slideDuration * math.ceil(Seconds(10) / slideDuration).toInt
logInfo(s"Checkpoint interval automatically set to $checkpointDuration")
}
谢谢你的回答。你知道updateStateByKey trasnfromation的检查点间隔是多少吗?好的,那么对于我的15秒批处理间隔,检查点间隔是:15*math.celi(10/15)=15秒。你认为它是最佳的还是我应该考虑手动改变间隔(设置它更大)?@ SRDJANKITOVICIC,这实际上取决于你的工作,你有多少输入数据,多少工人节点处理等等。非常感谢你的回答。抱歉幼稚,但是,如果检查点持续时间是批次持续时间的倍数,而不是每个批次。。持续时间之间的批次会发生什么?