Java 大规模处理以在非常大的字符串列表中查找唯一的最长单词?
我正在输入列表中查找最长的非重复字符串。代码是。我的问题是假设输入列表太大,无法放入内存Java 大规模处理以在非常大的字符串列表中查找唯一的最长单词?,java,hadoop,mapreduce,distributed,Java,Hadoop,Mapreduce,Distributed,我正在输入列表中查找最长的非重复字符串。代码是。我的问题是假设输入列表太大,无法放入内存 如果输入不能放入内存中,如何解决这个问题(比如说输入是一篇新闻报道中永无止境的一串单词) 是否可以/如果可以,如何使用Hadoop/Map reduce概念(任何url都受欢迎) 输入列表不需要保留在内存中:您不能将其流式输入吗 关于使用MapReduce执行此类任务,请看一看。如果输入太大,无法放入内存,则有两种选择: 1) 委托给数据库或其他基于磁盘的结构。这将花费大量的时间和资源,但你会得到一个准确的
输入列表不需要保留在内存中:您不能将其流式输入吗
关于使用MapReduce执行此类任务,请看一看。如果输入太大,无法放入内存,则有两种选择: 1) 委托给数据库或其他基于磁盘的结构。这将花费大量的时间和资源,但你会得到一个准确的答案 2) 使用概率方法,如a,这是一种概率方法。这将与Map Reduce配合使用,如下所示: 将输入的
元组映射到
元组,其中单词
是尚未重复的最长单词,而布鲁姆过滤器
是迄今为止发现的所有单词的概率表示
然后,在组合两个
bloom\u过滤器之前,您可以通过比较两个单词的长度来减少两个
元组,并将每个元组与另一个bloom\u过滤器的长度进行比较。注意,这可能会导致没有最长的单词
-这是非常有效的,从(dog,dog,plant,plant)
的输入案例中可以看出,您是否有兴趣得到一个不使用Hadoop/map reduce的答案?