如何将大变量广播到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
期间进行文件读取。根据您的用例,可能还有其他解决方案。
据我所知,广播对于获取变量的本地副本很有用。并且变量的大小必须适合工作人员的内存。
在我的例子中,但是,我想获取 大变量 的本地副本,这不适合工作人员的内存。
如何在 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
期间进行文件读取。根据您的用例,可能还有其他解决方案。