gpt4 book ai didi

scala - 按名称获取已注册的 Spark Accumulator

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

有没有办法按名称获取已注册的 Spark 累加器,而无需传递实际引用?期望的行为:

val cnt1 = sc.longAccumulator("cnt1")
val cnt2 = something.getAccumulatorByName("cnt1") asInstanceOf[LongAccumulator]
cnt1.add(1)
cnt2.value // returns 1

谢谢

最佳答案

Spark 中的累加器保存在 AccumulatorContext并且没有办法从中得到它们。 Spark 不允许您这样做,因为累加器是 不是 一直到你停下来 SparkContext .他们实现了规范化映射:一直保留累加器,直到您对它有强引用,并且一旦它们超出范围,GC 就会清理它们(具有特殊的终结过程)。

按名称获取累加器的唯一方法是将其放入 Map 中。
例如,如果您需要在 FileFormat 中编写累加器或 RelationProvider然后在驱动程序中读取它,只需保持对它的静态引用。
如果您在同一个类中读写累加器,并且想按名称获取它们,则很可能需要使用 Map[String, Long] 创建自定义累加器。里面。就性能而言,它的利润要高得多。

关于scala - 按名称获取已注册的 Spark Accumulator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323372/

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