据我所知,广播对于获取变量的本地副本很有用。并且变量的大小必须适合工人的记忆。
在我的情况下,但是,我想获得大变量的本地副本,这不适合工作人员的记忆。
如何在Spark中不使用广播功能广播这个大变量?
答案 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
期间读取文件。根据您的使用情况,可能还有其他解决方案。