【问题标题】:How to broadcast large variable to local disk of each node in SparkSpark中如何将大变量广播到每个节点的本地磁盘
【发布时间】:2017-09-01 09:51:32
【问题描述】:

据我所知,广播对于获取变量的本地副本很有用。并且变量的大小必须适合worker的内存。

在我的情况下,但是,我想获取不适合工人记忆的 大型变量 的本地副本。

如何在 Spark 中不使用广播功能广播这个大变量?

【问题讨论】:

  • 那是什么变量?您将对变量执行什么样的操作?

标签: hadoop apache-spark broadcast


【解决方案1】:

问题:

在我的情况下,但是,我想获取大变量的本地副本 不适合工人的记忆。

如何不使用广播功能广播这个大变量 在 Spark 中?

AFAIK 这是不可能的(这不符合工人的记忆......) 通过sc.broadcast(..)functions.broadcast(hint)

请注意内存限制为 2GB(TorrentBroadcast ) 请参阅SPARK-6235 - Address various 2G limits

您可以将该数据(您想要广播的)摄取到 hadoop/hbase(或任何无 sql)中,或者可能是 memcached,然后您可以查找。

【讨论】:

    【解决方案2】:

    大变量不适合工人的记忆

    就像上面提到的 Ram,如果它不适合工人的记忆,你就没有办法使用它,即使你可以广播它

    如果您尝试使用大型数据集进行查找,您可以在每个工作节点上建立一个到数据库的连接池。如果您有模型,您可以将模型保存到每个工作节点并在foreachPartition 期间读取文件。根据您的用例,可能还有其他解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      相关资源
      最近更新 更多