如何使用 MapReduce 框架处理打开的文件

Posted

技术标签:

【中文标题】如何使用 MapReduce 框架处理打开的文件【英文标题】:How to process an open file using MapReduce framework 【发布时间】:2015-01-26 15:49:55 【问题描述】:

我有一个文件被聚合并写入 HDFS。此文件将在关闭前打开一小时。是否可以在打开时使用 MapReduce 框架计算此文件?我试过了,但它没有拾取所有附加的数据。我可以查询 HDFS 中的数据并且它可用,但在 MapReduce 完成时不能。无论如何我可以强制 MapReduce 读取打开的文件吗?也许自定义 FileInputFormat 类?

【问题讨论】:

【参考方案1】:

您可以读取物理冲洗的内容。由于 close() 会最终刷新数据,因此无论您如何访问它(mapreduce 或命令行),您的读取都可能会丢失一些最新数据。 作为一种解决方案,我建议定期关闭当前文件,然后打开一个新文件(带有一些递增的索引后缀)。您可以在多个文件上运行 map reduce。您仍然会在最近的文件中丢失一些数据,但至少您可以通过文件“轮换”的频率来控制它。

【讨论】:

以上是关于如何使用 MapReduce 框架处理打开的文件的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop基础(十八):MapReduce框架原理切片机制

Hadoop MapReduce计算框架

如何用MapReduce程序对采集到的数据进行预处理?

实现一个MapReduce框架

弹性MapReduce 4.0.0版本发布,更新应用已可用

好程序员大数据学习路线分享MAPREDUCE