插入文本文件的数据(mapreduce)

66bbxpm5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(332)

我有一个大的文本文件,每一行都有一个时间戳和一些其他数据,比如:

  1. timestamp1,data
  2. timestamp2,data
  3. timestamp5,data
  4. timestamp7,data
  5. ...
  6. timestampN,data

此文件按时间戳排序,但连续的时间戳之间可能存在间隙。我需要填补这些空白,写新的文件。
我想读两行连续的文件。但我有两个问题:
怎么读两行?nlineinputformat或multiplelinetextinputformat可能有帮助,他们会读line1+line2,line2+line3,。。。还是1+2号线,3+4号线?
当我运行多个Map器时,如何管理线?
还有其他算法/解决方案吗?也许这不能用mapreduce完成?
(Pig/Hive解决方案也有效)
提前谢谢。

wvyml7n5

wvyml7n51#

如果您知道文件中时间戳值的范围,您可以使用与著名的1tb排序类似的方法,您可以执行以下操作:Map器应该按某个时间戳区域(这将是您的键)Map数据。reducer在一个键的上下文中处理数据,您可以在那里实现任何所需的逻辑。
另外,二次排序可能有助于在减速机中获得按时间戳排序的值。

相关问题