spark如何将数据分发给员工?
工作人员是从数据源读取,还是驱动程序读取数据并将其发送给工作人员?当一个工人需要另一个工人的数据时,他们会直接沟通吗?
谢谢!
答案 0 :(得分:5)
如果您使用分布式输入方法,例如SparkContext.textFile,则工作人员直接从您的数据源读取(或者如果您从工作人员任务代码中明确打开HDFS文件,那么当然这些也会发生在工作人员身上)。
如果您手动读取主驱动程序中的数据,然后使用SparkContext.parallelize
,那么您的驱动程序确实会向您的工作人员发送数据。
从工人到工人的数据依赖关系通常被称为shuffle;这种类型的工人与工人之间的沟通在很多方面都是大多数大数据处理系统的核心,正是因为高效可靠地完成这项工作非常棘手。从概念上讲,你可以将它或多或少视为“直接通信”,但根据数据依赖性的采用方式,可能还会有更多内容。