더북(TheBook)

제품 아이템 번호(Key)는 최상위 10개 연관 항목2과 함께 기록되어 있다. 예를 들어 product1이 80건의 거래에서 보이는데, product1이 item 142, item 133 등과 같이 있는 경우가 42번이다. 코드가 꽤 길어서 중요한 곳만 편집하였다. 이 책의 코드 예제에서 전체 리스트를 볼 수 있으며, http://www.wiley.com/go/machinelearning에서 다운로드할 수도 있다.

두 파일을 로드해야 하는데, 하나는 빈도 파일, 다른 하나는 빈도 패턴 파일이다. 빈도 패턴 파일에 대해서는 곧 알게 될 것이다. 다음은 빈도 파일을 로드하는 메서드다.


public static Map<Integer, Long> readFrequencyFile(Configuration configuration, String fileName) throws Exception {
        FileSystem fs = FileSystem.get(configuration);
        org.apache.hadoop.io.SequenceFile.Reader frequencyReader = new org.apache.hadoop.io.SequenceFile.Reader(fs,
                new Path(fileName), configuration);
        Map<Integer, Long> frequency = new HashMap<Integer, Long>();
        Text key = new Text();
        LongWritable value = new LongWritable();
        while(frequencyReader.next(key, value)) {
            frequency.put(Integer.parseInt(key.toString()), value.get());
        }
        return frequency;
    }

 

이 부분은 간단하지만, 일반 파일 클래스가 아니라 하둡의 시퀀스 파일 리더를 사용하여 데이터를 읽어들인다. 파일을 연 다음 반복문을 사용하여 키와 값을 해시맵에 추가한다.

 

2  역주 ‘Key:’ 부분에서 ([ ],) 형식으로 된 항목들

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.