In this (https://dzone.com/articles/what-are-spark-checkpoints-on-dataframes) article it says that checkpointing is used to "freeze the content of a dataframe before I do something else".
However in this (http://blog.madhukaraphatak.com/introduction-to-spark-structured-streaming-part-7/) article it says that checkpointing is used to recover from failure. From this I gather that if spark is processing a kafka topic and spark crashes, after it restarts will it start processing from the offsets where it last checkpointed. Is this statement correct?
Are there 2 different concepts of checkpointing in spark? Because I can't reconcile the 2.