[HADOOP] Mahout : 사용자 정의 입력 파일을 읽으려면
HADOOPMahout : 사용자 정의 입력 파일을 읽으려면
나는 Mahout과 놀고 있었고 FileDataModel이 형식의 데이터를 허용한다는 것을 알았습니다.
userId,itemId,pref(long,long,Double).
나는 형식의 데이터를 가지고있다.
String,long,double
Mahout에서이 데이터 세트를 사용하는 가장 쉽고 / 쉬운 방법은 무엇입니까?
해결법
-
==============================
1.이를 수행하는 한 가지 방법은 FileDataModel의 확장을 작성하는 것입니다. readUserIDFromString (String value) 메서드를 재정의하여 어떤 종류의 해결자를 사용하여 변환해야합니다. Sean이 제안한대로 IDMigrator 구현 중 하나를 사용할 수 있습니다.
이를 수행하는 한 가지 방법은 FileDataModel의 확장을 작성하는 것입니다. readUserIDFromString (String value) 메서드를 재정의하여 어떤 종류의 해결자를 사용하여 변환해야합니다. Sean이 제안한대로 IDMigrator 구현 중 하나를 사용할 수 있습니다.
예를 들어 초기화 된 MemoryIDMigrator가 있다고 가정하면 다음을 수행 할 수 있습니다.
@Override protected long readUserIDFromString(String stringID) { long result = memoryIDMigrator.toLongID(stringID); memoryIDMigrator.storeMapping(result, stringID); return result; }
이렇게하면 memoryIDMigrator를 사용하여 역 매핑을 수행 할 수도 있습니다. 필요없는 경우에는 구현시 완료된 방식으로 해시 할 수 있습니다 (AbstractIDMigrator에 있음).
-
==============================
2.userId와 itemId는 string이 될 수 있습니다. 따라서이 문자열은 정수로 문자열을 변환하고 메모리 (String, Id)를 유지합니다 CustomFileDataModel입니다. 추천 후 ID에서 문자열을 얻을 수 있습니다.
userId와 itemId는 string이 될 수 있습니다. 따라서이 문자열은 정수로 문자열을 변환하고 메모리 (String, Id)를 유지합니다 CustomFileDataModel입니다. 추천 후 ID에서 문자열을 얻을 수 있습니다.
-
==============================
3.여러분의 입력이 메모리에 들어가면 그것을 반복하십시오. 사전에있는 각 문자열의 ID를 추적하십시오. 메모리에 맞지 않으면 sort를 사용한 다음 group by를 사용하여 동일한 아이디어를 얻으십시오.
여러분의 입력이 메모리에 들어가면 그것을 반복하십시오. 사전에있는 각 문자열의 ID를 추적하십시오. 메모리에 맞지 않으면 sort를 사용한 다음 group by를 사용하여 동일한 아이디어를 얻으십시오.
파이썬에서 :
import sys
import sys next_id = 0 str_to_id = {} for line in sys.stdin: fields = line.strip().split(',') this_id = str_to_id.get(fields[0]) if this_id is None: next_id += 1 this_id = next_id str_to_id[fields[0]] = this_id fields[0] = str(this_id) print ','.join(fields)
from https://stackoverflow.com/questions/7209624/mahout-to-read-a-custom-input-file by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HBase 오류 : zookeeper.znode.parent 불일치 (0) | 2019.06.20 |
---|---|
[HADOOP] 지원되지 않는 서브 쿼리 식 : 상관 식은 규정되지 않은 열 참조를 포함 할 수 없습니다. (0) | 2019.06.20 |
[HADOOP] Hbase-site.xml을 클래스 패스에 포함시키는 방법 (0) | 2019.06.20 |
[HADOOP] hadoop에서 로깅 기능 제어 (0) | 2019.06.20 |
[HADOOP] 드라이버에서 MapReduce로 객체 전달하기 (0) | 2019.06.20 |