如何将大变量广播到Spark中每个节点的本地磁盘

How to broadcast large variable to local disk of each node in Spark

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

在我的例子中,但是,我想获取 大变量 的本地副本,这不适合工作人员的内存。

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

问题:

In my case, However, I want to get local copy of large variable which is not fit in worker's memory.

How can i broadcast this large variable not using broadcast function in Spark?

据我所知,这是不可能的(这不符合工人的记忆……) 通过 sc.broadcast(..)functions.broadcast(hint)

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

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

  • 看看

large variable which is not fit in worker's memory

像上面说的Ram,如果不在worker的内存中,你是没法用的,就算你能广播.

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