我在输入列表中找到了最长的非重复字符串.代码是here.我的问题是假设输入列表太大而不适合内存.
>如果输入不能适合内存,如何解决这个问题(即假设输入是一篇永无止境的新闻纸词串)?
>可以/如果是,那么,如何使用Hadoop / Map减少概念(任何网址赞赏)
解决方法:
如果输入太大而无法放入内存,则有两种选择:
1)委托数据库或其他一些基于磁盘的结构.这在时间和资源方面将是昂贵的,但您将得到准确的答案
2)使用概率方法,例如Bloom filter,这是一种概率HashSet.这适用于Map Reduce,如下所示:
地图输入< word>元组到< word,bloom_filter>元组,其中单词是尚未重复的最长单词,bloom_filter是迄今发现的所有单词的概率表示
然后你可以减少两个< word,bloom_filter>在组合两个bloom_filters之前,通过比较两个单词长度,并检查每个单词的长度,并检查每个单词的长度.请注意,这可能导致没有最长的单词 – 这是非常有效的,这可以在输入的情况下看到(狗,狗,植物,植物).