我有一个大的文本文件,每一行都有一个时间戳和一些其他数据,比如:
timestamp1,data
timestamp2,data
timestamp5,data
timestamp7,data
...
timestampN,data
此文件按时间戳排序,但连续的时间戳之间可能存在间隙。我需要填补这些空白,写新的文件。
我想读两行连续的文件。但我有两个问题:
怎么读两行?nlineinputformat或multiplelinetextinputformat可能有帮助,他们会读line1+line2,line2+line3,。。。还是1+2号线,3+4号线?
当我运行多个Map器时,如何管理线?
还有其他算法/解决方案吗?也许这不能用mapreduce完成?
(Pig/Hive解决方案也有效)
提前谢谢。
1条答案
按热度按时间wvyml7n51#
如果您知道文件中时间戳值的范围,您可以使用与著名的1tb排序类似的方法,您可以执行以下操作:Map器应该按某个时间戳区域(这将是您的键)Map数据。reducer在一个键的上下文中处理数据,您可以在那里实现任何所需的逻辑。
另外,二次排序可能有助于在减速机中获得按时间戳排序的值。