我广播了一组大的变量。这些变量是从群集数据库加载的。是否有可能将来自数据库的负载分布到工作节点,然后让每个节点向所有节点广播它们的特定变量,以便进行后续的映射操作?
谢谢!
发布于 2016-10-25 13:39:03
好吧,答案似乎是否定的。
调用sc.broadcast(someRDD)会导致错误。你得先把它拿回给司机。
发布于 2016-10-05 18:26:47
广播变量通常被传递给工作人员,但我可以告诉您,在python中,我在类似的情况下做了什么。
如果您知道行的总数,可以尝试创建一个长度为该长度的RDD,然后在其上运行一个映射操作(它将分发给工人)。在地图中,工作人员运行一个函数来获取某些数据(不确定如何使他们都获得不同的数据)。
每个工作人员将通过调用检索所需的数据。然后,您可以执行一个collectAsMap()来获取一个字典,并将其广播给所有工作人员。
但是,请记住,您需要在每个工作人员上提出客户端请求的所有软件依赖项。您还需要记住套接字的使用。我只是做了一些类似于查询API的事情,并且没有看到套接字的增加,尽管我是在发出常规的HTTP请求。不确定..。
https://stackoverflow.com/questions/39878734
复制相似问题