제품 아이템 번호(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:’ 부분에서 ([ ],) 형식으로 된 항목들