我正在尝试使用自定义文件格式转储我在 Hadoop 集群上的一些数据,通常在 HBase 中。
我想做的或多或少是以下几点:
- 从分布式记录列表开始,例如 Scalding 管道或类似的
- 通过一些计算函数对项目进行分组
- 使属于同一组的项目驻留在同一台服务器上
- 在每个组上,应用一个转换 - 涉及排序 - 并将结果写入磁盘。事实上我需要写一堆 MapFile——它们本质上是排序的 SequenceFile,加上一个索引。
我想用 Scalding 实现上述功能,但我不知道如何做最后一步。
虽然当然不能以分布式方式写入已排序的数据,但将数据拆分为块然后写入本地排序的每个块应该仍然可行。尽管如此,我还是找不到任何 MapFile 输出用于 map-reduce 作业的实现。
我认识到对非常大的数据进行排序是一个坏主意,这就是即使在单个服务器上我也计划将数据拆分成块的原因。
有没有办法用 Scalding 做类似的事情?可能我可以直接使用 Cascading,或者真正使用其他管道框架,例如 Spark。