假设我有世界上所有国家/地区的活动数据(从关系上讲,每条记录都有一个国家/地区列),我希望通过每个国家/地区可用的一些参考数据来丰富该数据,然后将其用作某些ML算法的输入。此外,我知道每个连接集(按国家键入和加入)都适合单个执行器,在国家级处理这些数据的最有效方法是什么,并将结果合并以汇总总输出。
我目前的想法是:
其次,使用选项2),如何在初始键入和按国家/地区加入所有后续聚合操作(如groupBy()e.t.c.具有狭窄的依赖性(因为所有数据都将位于相同的“国家”分区中)。我是否只需要在我的聚合函数中使用的键中包含country列 - 例如groupBy(country,key1,key2 ...)?
答案 0 :(得分:0)
我会做三件基本的事情:
mapPartitions
转换基于每个分区的Iterable
数据reduceByKey
或aggregateBykey
进行汇总所有这一切都应该让您尽可能高效地减少网络随机播放和磁盘I / O,同时在最后执行写操作之前完成所有实际工作。