【发布时间】:2014-05-18 05:31:26
【问题描述】:
我有一个大小为 1 TB 的 Json 文件。每个Json Object 是一个包含 500-600 个字的文本。有 5000 万个 Json 对象。
现在这就是我对这个 Json 文件要做的事情。我需要在网页中插入 200-300 个单词和一个百分比值。完成此操作后,Web 应用程序将读取整个 Json 文件,检查插入的单词是否在任何 Json 对象中可用,以及可用的百分比是多少。如果可用性百分比高于我插入的百分比,则此应用程序还将跟踪 Json 对象中可用的单词与输入列表的比较以及 Json 对象中缺失的单词与输入列表的比较。
我觉得读1TB太大了,所以我做了一个技巧。我将每个Json Object 中的文本转换为散列(这个散列代表任何包含 3 个字符的单词)并将其保存到文本文件中。现在,这个文本文件的每一行中的哈希都代表了特定 Json 对象中的文本。这个文本文件有 120GB 大。 5000 万行。
我的问题是阅读和执行上述工作仍然更难。需要几个小时才能完成!为什么?因为应用程序读取此哈希中的“每一”行,所以搜索哪些单词可用,哪些单词不可用。所以这个“检查”算法运行了 5000 万次!
有什么方法可以减少此操作的时间并在几秒钟内完成?我知道在化学和遗传医学中的应用会在几秒钟内完成完全相同的事情!我对所有解决方案持开放态度,无论是大数据解决方案、数据挖掘还是简单修复,等等。
PS:我想到了一个基于 Hadoop 的解决方案,但购买了很多计算机。这是一个巨大的成本,即使在亚马逊上运行也是双倍的成本!
【问题讨论】:
标签: java text for-loop data-mining bigdata