Java 大规模处理以在非常大的字符串列表中查找唯一的最长单词?

Java 大规模处理以在非常大的字符串列表中查找唯一的最长单词?,java,hadoop,mapreduce,distributed,Java,Hadoop,Mapreduce,Distributed,我正在输入列表中查找最长的非重复字符串。代码是。我的问题是假设输入列表太大,无法放入内存 如果输入不能放入内存中,如何解决这个问题(比如说输入是一篇新闻报道中永无止境的一串单词) 是否可以/如果可以,如何使用Hadoop/Map reduce概念(任何url都受欢迎) 输入列表不需要保留在内存中:您不能将其流式输入吗 关于使用MapReduce执行此类任务,请看一看。如果输入太大,无法放入内存,则有两种选择: 1) 委托给数据库或其他基于磁盘的结构。这将花费大量的时间和资源,但你会得到一个准确的

我正在输入列表中查找最长的非重复字符串。代码是。我的问题是假设输入列表太大,无法放入内存

  • 如果输入不能放入内存中,如何解决这个问题(比如说输入是一篇新闻报道中永无止境的一串单词)

  • 是否可以/如果可以,如何使用Hadoop/Map reduce概念(任何url都受欢迎)


  • 输入列表不需要保留在内存中:您不能将其流式输入吗


    关于使用MapReduce执行此类任务,请看一看。

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

    1) 委托给数据库或其他基于磁盘的结构。这将花费大量的时间和资源,但你会得到一个准确的答案

    2) 使用概率方法,如a,这是一种概率方法。这将与Map Reduce配合使用,如下所示:

    将输入的
    元组映射到
    元组,其中
    单词
    是尚未重复的最长单词,而
    布鲁姆过滤器
    是迄今为止发现的所有单词的概率表示


    然后,在组合两个
    bloom\u过滤器之前,您可以通过比较两个
    单词的长度来减少两个
    元组,并将每个元组与另一个
    bloom\u过滤器的长度进行比较。注意,这可能会导致没有最长的
    单词
    -这是非常有效的,从
    (dog,dog,plant,plant)

    的输入案例中可以看出,您是否有兴趣得到一个不使用Hadoop/map reduce的答案?