SparkStreaming程序一旦启动之后,除非我们手动停止,否则会一直处于运行的状态。Driver只是一个简单的进程,在程序运行过程中,有可能挂掉,此时SparkStreaming应用会停止运行。
所以实现Driver的HA就有必要(如果使用的Client模式就无法实现Driver HA ,这里针对的是cluster模式)。
准备一段代码
package spark.SparkStreaming
import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession
import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.{Seconds, StreamingContext}
object DriverHADemo {
def main(args: Array[String]): Unit = {
//SparkSession
val spark: SparkSession = SparkSession.builder()
.appName(this.getClass.getSimpleName)
.getOrCreate()
val sc: SparkContext = spark.sparkContext
//设置检查点
val ck = "/spark-streaming/ck_ha"
val ssc: StreamingContext = StreamingContext.getOrCreate(ck,()=>{
val tmpSsc: StreamingContext = new StreamingContext(sc,Seconds(2))
//设置检查点
tmpSsc.checkpoint(ck)