微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在非常大的字符串列表中查找唯一最长字的大规模处理?

我在输入列表中找到了最长的非重复字符串.代码here.我的问题是假设输入列表太大而不适合内存.

>如果输入不能适合内存,如何解决这个问题(即假设输入是一篇永无止境的新闻纸词串)?
>可以/如果是,那么,如何使用Hadoop / Map减少概念(任何网址赞赏)

解决方法:

如果输入太大而无法放入内存,则有两种选择:

1)委托数据库或其他一些基于磁盘的结构.这在时间和资源方面将是昂贵的,但您将得到准确的答案

2)使用概率方法,例如Bloom filter,这是一种概率HashSet.这适用于Map Reduce,如下所示:

地图输入< word>元组到< word,bloom_filter>元组,其中单词是尚未重复的最长单词,bloom_filter是迄今发现的所有单词的概率表示

然后你可以减少两个< word,bloom_filter>在组合两个bloom_filters之前,通过比较两个单词长度,并检查每个单词的长度,并检查每个单词的长度.请注意,这可能导致没有最长的单词 – 这是非常有效的,这可以在输入的情况下看到(狗,狗,植物,植物).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐