java - 通过java程序读取大型输入文件(10gb)

标签 java memory-management file-io hadoop mapreduce

我正在处理 2 个大输入文件,每个文件大小为 5GB。 它是 Hadoop map reduce 的输出,但由于我无法在 Map reduce 中进行依赖性计算,我正在切换到优化的 for 循环以进行最终计算(请参阅我之前关于 map reduce 设计的问题 Recursive calculations using Mapreduce

我想就在 java 中读取如此大的文件并进行一些基本操作提出建议,最后我将写出大约 5gb 的数据..

感谢你的帮助

最佳答案

如果文件具有您所描述的属性,即每个键有 100 个整数值,每个键有 10GB,那么您正在谈论的键数量非常多,远远超出了内存所能容纳的范围。如果您可以在处理之前对文件进行排序,例如使用 OS 排序实用程序或具有单个 reducer 的 MapReduce 作业,您可以同时读取两个文件,进行处理并输出结果,而无需在内存中保留太多数据。

关于java - 通过java程序读取大型输入文件(10gb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6777061/

相关文章:

java - 如何在 Olingo V4 (java) 中创建有界 Action

java - 在 String 上运行多个正则表达式模式

java - 为什么即使我的哈希码值相同, '==' 仍返回 false

java - Selenium 获取 Twingly 的文本输入(Java 代码)

c++ - C++中删除对象的方法有哪些?

c++ - 删除链表的正确方法

c++ - 小对象分配器

c# - 有没有更好的方法来覆盖文件然后检查更改(在 C# 中)?

java - 使用字符串更新 .txt 文件

c - glibc 中的 fxprintf.c 中如何将多字节字符串转换为宽字符字符串?