spark动态更新广播变量

您所在的位置:网站首页 spark动态更新广播变量 spark动态更新广播变量

spark动态更新广播变量

2024-07-02 14:02| 来源: 网络整理| 查看: 265

即使只使用一次,使用广播变量也有几个优点: 您可以避免序列化的几个问题。当序列化使用属于外部类的字段的匿名内部类时,这涉及序列化其封闭类。即使spark和其他框架已经编写了一个变通方法来部分缓解这个问题,尽管ClosureCleaner有时并没有做到这一点。您可以通过执行一些技巧来避免NotSerializableExceptions,例如:将类成员变量复制到闭包中,将匿名内部类转换为类,并在构造函数中仅放置必需的字段等。如果您使用BroadcastVariable,您甚至没有想到这一点,该方法本身将仅序列化必需的变量。我建议阅读not-serializable-exception问题和第一个答案,以更好地深化概念。 闭包的序列化性能在大多数情况下比专用序列化方法差。正如spark的官方文档所说:data-serializationKryo比Java序列化(通常高达10倍)更快、更紧凑。在官方Spark repo中搜索Spark类时,我看到闭包是通过变量SparkEnv.get.closureSerializer SparkEnv.get.closureSerializer序列化的。该变量的唯一赋值是SparkEnv类第306行的赋值,该类使用标准且低效的JavaSerializer。在这种情况下,如果序列化一个大对象,则会由于网络带宽而损失一些性能。这也可以解释为什么官方文件声



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3