Spark工作节点是否可以广播变量?

时间:2016-10-05 15:58:33

标签: apache-spark

我播放了一组大变量。这些变量从群集数据库加载。是否可以跨工作节点分配来自数据库的负载,然后让每个负载将其特定变量广播到所有节点以进行后续的映射操作?

谢谢!

2 个答案:

答案 0 :(得分:0)

广播变量通常传递给工作者,但我可以告诉你我在python中的类似情况下做了什么。

如果您知道总行数,则可以尝试创建该长度的RDD,然后对其运行映射操作(将分发给工作人员)。在地图中,工作人员正在运行一个函数来获取一些数据(不确定如何使它们都获得不同的数据)。

每个工作人员都会通过拨打电话来检索所需的数据。然后,您可以执行collectAsMap()来获取字典并将其广播给所有工作人员。

但请记住,您需要为每个工作人员提供客户端请求的所有软件依赖性。您还需要记住套接字使用情况。虽然我正在制作常规的HTTP请求,但我只是在查询API时做了类似的事情并没有看到套接字的增加。不确定......

答案 1 :(得分:0)

好的,所以答案似乎不是。

调用sc.broadcast(someRDD)会导致错误。你必须先把它()收回给司机。