본문 바로가기

Mahout

[Mahout] IDMigrator

하루빨리 슬럼프를 극복하기위해 뭔가 몰입할 것을 찾다가..

회사에도 도움이 되고, 나도 새로운것 좀 볼 수 있는.. Mahout을 한번..

해보기로..


일단, 그동안 모아놓은 검색관련 데이터들을 테스트로 돌려보기위해서

예제를 보며 맞춰나가던 중..


Mahout은 대용량 데이터를 처리하기위해 ID, ItemId등의 값을 모두 Long으로 처리하는데..

내가 모아놓은 데이터는.. String이라서.. 이게 .. 적용이 안됨 -.-


대부분의 사용자들이 모아둔 데이터가 Mapping을 사용해서 해놓지는 않았을테니..

뭔가 API가 있을거야.... 하고 찾아보다가 IDMigrator 인터페이스를 확인...


toLongID, toStringID 메서드 두개를 가지고 있는데..

이를 구현한 MemoryIDMigrator, MySQLJDBCIDMigrator 를 활용해보았다.



처음에는 자동으로 Mapping도 해주는줄 알았는데 그건 아니었고..storeMapping method를 사용해야한다.

MemoryIDMigrator는 heap 메모리상에, MySQLJDBCIDMigrator는 DB에 매핑테이블을 하나 만들고

그 테이블에 Mapping 데이터를 넣어서 관리해준다. String <-> Long은 md5Digest를 활용하여 변환..


JDBCMigrator 같은 경우 테이블명과 long column, string column명을 생성자에 줄 수도 있고..

안주면 기본적으로 taste_id_mapping (long_id, string_id) 형태의 테이블이 필요하다.

long_id는 pk 잡아주면 될것 같다. (insert ignore 문이 사용되고 있는것으로 봐서는..)


데이터 많아질것을 대비해서 index로 각 컬럼value로 생성하는 것이 좋겠다.