복붙노트

[HADOOP] MapReduce를 사용한 순열

HADOOP

MapReduce를 사용한 순열

MapReduce로 순열을 생성하는 방법이 있습니까?

입력 파일:

1  title1
2  title2
3  title3

내 목표:

1,2  title1,title2
1,3  title1,title3
2,3  title2,title3

해결법

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

    1.파일에는 n 개의 입력이 있으므로 순열에는 n ^ 2 개의 출력이 있어야합니다. 이러한 작업을 n 개 수행 할 수 있다는 것은 의미가 있습니다. 나는 당신이 이것을 할 수 있다고 믿는다 (하나의 파일에 대해서만 가정).

    파일에는 n 개의 입력이 있으므로 순열에는 n ^ 2 개의 출력이 있어야합니다. 이러한 작업을 n 개 수행 할 수 있다는 것은 의미가 있습니다. 나는 당신이 이것을 할 수 있다고 믿는다 (하나의 파일에 대해서만 가정).

    입력 파일을 DistributedCache에 넣어 Mapper / Reducers에 읽기 전용으로 액세스 할 수있게하십시오. WordCount와 같이 파일의 각 행에 입력 분할을 만듭니다. 그러면 매퍼에서 한 줄을 받게됩니다 (예 : title1). 그런 다음 DistributedCache의 파일에서 행을 읽고 키 / 값 쌍을 입력하십시오. 키를 입력으로 사용하고 DistributedCache의 파일에서 각 행의 값을 사용하십시오.

    이 모델에서는 Map 단계 만 필요합니다.

    같은 것 :

      public static class PermuteMapper
           extends Mapper<Object, Text, Text, Text>{
    
        private static final IN_FILENAME="file.txt";
    
        public void map(Object key, Text value, Context context
                        ) throws IOException, InterruptedException {
    
          String inputLine = value.toString();
    
          // set the property mapred.cache.files in your
          // configuration for the file to be available
          Path[] cachedPaths = DistributedCache.getLocalCacheArchives(conf);
          if ( cachedPaths[0].getName().equals(IN_FILENAME) ) {
             // function defined elsewhere
             String[] cachedLines = getLinesFromPath(cachedPaths[0]);
             for (String line : cachedLines)
               context.emit(inputLine, line);
          }
        }
      }
    
  2. from https://stackoverflow.com/questions/6535878/permutations-with-mapreduce by cc-by-sa and MIT license