gpt4 book ai didi

apache-spark - 如何在 Spark Streaming 中构建查找图?

转载 作者:行者123 更新时间:2023-12-04 04:42:57 26 4
gpt4 key购买 nike

在 Spark 流应用程序中维护应用程序状态的最佳方法是什么?

我知道两种方法:

  • 使用“联合”操作附加到查找 RDD 并在每个联合之后坚持它。
  • 将状态保存在文件或数据库中,并在每批开始时加载它。

  • 我的问题是从性能的角度来看哪个更好?另外,有没有更好的方法来做到这一点?

    最佳答案

    你真的应该使用 mapWithState(spec: StateSpec[K, V, StateType, MappedType])如下:

    import org.apache.spark.streaming.{ StreamingContext, Seconds }
    val ssc = new StreamingContext(sc, batchDuration = Seconds(5))

    // checkpointing is mandatory
    ssc.checkpoint("_checkpoints")

    val rdd = sc.parallelize(0 to 9).map(n => (n, n % 2 toString))
    import org.apache.spark.streaming.dstream.ConstantInputDStream
    val sessions = new ConstantInputDStream(ssc, rdd)

    import org.apache.spark.streaming.{State, StateSpec, Time}
    val updateState = (batchTime: Time, key: Int, value: Option[String], state: State[Int]) => {
    println(s">>> batchTime = $batchTime")
    println(s">>> key = $key")
    println(s">>> value = $value")
    println(s">>> state = $state")
    val sum = value.getOrElse("").size + state.getOption.getOrElse(0)
    state.update(sum)
    Some((key, value, sum)) // mapped value
    }
    val spec = StateSpec.function(updateState)
    val mappedStatefulStream = sessions.mapWithState(spec)

    mappedStatefulStream.print()

    关于apache-spark - 如何在 Spark Streaming 中构建查找图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088471/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com