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

时间:2017-09-01 09:51:33

标签: hadoop apache-spark broadcast

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

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

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

2 个答案:

答案 0 :(得分:1)

问题:

  

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

     

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

AFAIK这是不可能的(它不适合工人的记忆......) sc.broadcast(..)functions.broadcast(hint)

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

您可以将这些数据(您想要广播)摄取到hadoop / hbase(或任何没有sql)或者可以进行memcached,然后您可以查找。

答案 1 :(得分:1)

  

大变量,不适合工人的记忆

就像上面提到的Ram一样,如果它不适合工作人员的记忆,你就无法使用它,即使你可以播放它

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