我有一个大文本文件(以TB为单位),每一行都有一个时间戳和一些其他数据,例如:
时间戳1,数据
时间戳2,数据
时间戳5,数据
时间戳7,数据
...
时间戳,数据
该文件按时间戳排序,但是连续的时间戳之间可能会有间隔。我需要填补这些空白并编写新文件。
可以在Hadoop Map Reduce中完成吗?问这个问题的原因是为了插入缺失的行,我也需要前一行和下一行。例如要内插timestamp6,我需要timestamp5和timestamp7中的值。那么,如果从timestamp7开始位于另一个数据块中,在这种情况下,我将完全无法计算timestamp6。
还有其他算法/解决方案吗?也许mapreduce无法做到这一点?我们可以在RHADOOP中做到吗?
( pig / hive 解决方案也有效)
最佳答案
尽管我的建议有点乏味,并且可能还会影响一点性能。您可以实现自己的RecordReader,并在当前拆分的所有行的末尾,使用其块位置获取下一个拆分的第一行。我建议这样做是因为,如果任何映射器的最后一行不完整,hadoop本身也会这样做。希望这可以帮助!!
关于r - Hadoop中缺少时间序列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25439251/