【发布时间】:2013-10-18 05:37:36
【问题描述】:
我正在做一个需要路径导航图的项目。
问题描述: 为了提供项目上下文,示例 UI 应类似于:http://bl.ocks.org/mbostock/4063570 .不同的是它将用于站点导航。我的问题是在后端处理数据。
对于用户路径 A->B->C->D->E 我预计算的数据格式如下:
Origin:Start:End:Level
A A B L1
A B C L2
A C D L3
A D E L4
现在,假设我有数百万条这样的记录,其中包含 100 个 Origin,我可以对它们进行分组、汇总大小并按大小 desc 排序并取前 10 个。所以对于每个 origin、start 和 Level,我应该有 10 个记录每一个。 因此,对于 4 个级别的图表,对于图中的给定起始节点,我将有 10.. 10^2.. 10^3.. 10^4。
真正的问题: 排序后的前 10 名并不能带走所有不需要的 L3 和 L4。对于给定的原点,L1 的结束应该是 L2 的开始,L2 的结束应该是 L3 的开始,依此类推。由于这个原因,我有许多记录,其中许多 L2 开始不属于 L1 结束,并且随着级别的增加而倍增。 插图:
A A B L1
A B C L2
A F G L2 <-- this comes in top 10 after aggregation, but start is not the end of L1 (B in this case)
我尝试了什么:在对前 10 名进行排序和切片后,我对每个级别的数百万条记录进行自联接 1 到 1。我有 10 个级别。它在计算上非常昂贵。
我在寻找什么: 通用且成本较低的 Map-reduce 解决方案。如果我能在烫伤的情况下得到它就更好了。
【问题讨论】:
标签: hadoop graph mapreduce bigdata scalding