【问题标题】:Would it be worthy to broadcast small variables in Apache Spark?在 Apache Spark 中广播小变量是否值得?
【发布时间】:2015-09-20 06:56:19
【问题描述】:

根据Spark Tuning Tips,广播功能可用于大型对象以减小每个序列化任务的大小。

这对我来说很有意义,但我的问题是,对于像 Integer 或 Boolean 对象这样的小对象,是否仍然值得有对象创建开销来广播它们?我的预感是不鼓励,但我在网上找不到任何令人信服的解释,如果你做过一些基准测试和研究,请帮忙。

下面是定义变量的代码:

final Broadcast<String> someFolderBroadcast = javaSparkContext.broadcast(someFolder);
final Broadcast<Boolean> someModeBroadcast = javaSparkContext.broadcast(isSomeMode);

someFolderBroadcast.value() 和 someModeBroadcast.value() 用于检索广播变量中存储的值。

【问题讨论】:

  • Spark 会在 master 上打印每个任务的序列化大小,因此您可以通过查看来判断您的任务是否太大。通常,大于 20 KB 的任务可能值得优化。那么你的任务规模是多少?
  • @eliasah,我无法在集群上运行程序,因为我正在进行代码审查。原作者正在广播单个布尔或整数变量,我认为这不值得创建广播对象的开销,但我找不到任何相关主题的文章..
  • 贴出你正在执行的代码
  • @eliasah,我已经编辑了这个问题,请看一下,让我知道你的想法,非常感谢你的帮助!
  • 如果没有,请不要播放!

标签: apache-spark broadcast


【解决方案1】:

Spark 会在 master 上打印每个任务的序列化大小,因此您可以查看它来确定您的任务是否太大。通常,大于 20 KB 的任务可能值得优化。

因此,如果您的变量(或任务)大于 20 KB,请广播它们!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多