복붙노트

[HADOOP] 다른 파일의 한 파일에서 단어를 검색하는 Hadoop

HADOOP

다른 파일의 한 파일에서 단어를 검색하는 Hadoop

한 파일에서 단어를 읽고 다른 파일에서 검색 할 수있는 hadoop 응용 프로그램을 만들고 싶습니다.

단어가있는 경우 - 하나의 출력 파일에 기록해야합니다 단어가 존재하지 않으면 - 다른 출력 파일에 써야합니다.

나는 hadoop에서 몇 가지 예제를 시도했다. 두 가지 질문이 있습니다.

두 파일의 크기는 각각 약 200MB입니다. 다른 파일의 모든 단어를 확인하면 메모리가 부족할 수 있습니다. 이 작업을 수행 할 수있는 다른 방법이 있습니까?

hadoop의 축소 단계의 출력이 하나의 파일에만 기록되므로 다른 파일에 데이터를 쓰는 방법. 다른 출력 파일에 데이터를 기록하기 위해 위상을 줄이기위한 필터를 사용할 수 있습니까?

고맙습니다.

해결법

  1. ==============================

    1.내가 어떻게 그것을 할 :

    내가 어떻게 그것을 할 :

    문서의 누락 된 단어가 포함 된 서로 다른 만큼 많은 축소 출력을 얻게됩니다. 파일을 표시하려면 'missingsource> ONCE를'reduce '시작 부분에 쓸 수 있습니다.

    (* 1)지도에서 출처를 찾는 방법 (0.20) :

    private String localname;
    private Text outkey = new Text();   
    private Text outvalue = new Text();
    ...
    public void setup(Context context) throws InterruptedException, IOException {
        super.setup(context);
    
        localname = ((FileSplit)context.getInputSplit()).getPath().toString();
    }
    
    public void map(Object key, Text value, Context context)
        throws IOException, InterruptedException {
    ...
        outkey.set(...);
        outvalue.set(localname);
        context.write(outkey, outvalue);
    }
    
  2. ==============================

    2.이 문제를 해결하기위한 특정 이유로 Hadoop / MapReduce를 사용하고 있습니까? 이것은 Hadoop보다 Lucene 기반 애플리케이션에 더 적합한 것으로 들립니다.

    이 문제를 해결하기위한 특정 이유로 Hadoop / MapReduce를 사용하고 있습니까? 이것은 Hadoop보다 Lucene 기반 애플리케이션에 더 적합한 것으로 들립니다.

    Hadoop을 사용해야하는 경우 몇 가지 제안 사항이 있습니다.

    여기에있는 다른 대답에서 언급 한 인덱싱 방법도 가능성을 제공합니다. 다시 말하지만, 문서 인덱싱이라는 용어만으로 Lucene을 생각하게 만들었습니다. 이 방법을 사용한 경우 키 값에 단어뿐만 아니라 문서 식별자가 포함되어 있는지 확인하여 각 문서에 단어 개수가 포함되도록해야합니다.

    필자는 MapReduce 작업에서 여러 개의 출력 파일을 생성 한 적이 없다고 생각합니다. 인덱싱 된 출력을 여러 파일로 처리하려면 코드를 작성해야하며 매우 간단해야합니다.

  3. ==============================

    3.제 의견으로는 두 단계로 이것을하고 싶을 것입니다. 두 개의 초기 문서에 대해 wordcount 프로그램 (hadoop 예제 jar에 포함되어 있음)을 실행하면 각 문서에있는 단어의 고유 목록 (개수 포함)을 포함하는 두 개의 파일이 제공됩니다. 거기에서, 당신의 질문에 대답해야만하는 두 파일에 대해 hadoop을 사용하는 것보다는 간단한 diff를 사용하는 것이 좋습니다.

    제 의견으로는 두 단계로 이것을하고 싶을 것입니다. 두 개의 초기 문서에 대해 wordcount 프로그램 (hadoop 예제 jar에 포함되어 있음)을 실행하면 각 문서에있는 단어의 고유 목록 (개수 포함)을 포함하는 두 개의 파일이 제공됩니다. 거기에서, 당신의 질문에 대답해야만하는 두 파일에 대해 hadoop을 사용하는 것보다는 간단한 diff를 사용하는 것이 좋습니다.

  4. from https://stackoverflow.com/questions/2128209/hadoop-searching-words-from-one-file-in-another-file by cc-by-sa and MIT license