freebase 덤프 (제목, 별칭, 유형 이름)에서 avro로 데이터를 추출 중입니다 (아직이 작업에 포함되지 않음). 나는 파이썬으로 스트리밍하는 mapreduce를 사용하고있다.Hadoop streaming KeyFieldBasedPartitioner
이 직업 감속기는 유형 제목 (일반적으로 모든 객체 제목)과 객체에 대한 유형 ID 참조를 기대합니다. 기록의 형태는 다음과 같습니다
common.topic%title Topic
common.topic%used_by m.01dyhm
common.topic%used_by m.03x5qm
common.topic%used_by m.04pm6
감속기가 방출 : id%relation\tvalue
m.01dyhm%type Topic
m.03x5qm%type Topic
m.04pm6%type Topic
제목, (그래서 감속기를 기억하고 역 참조 된 기록을 방출) 참조를 진행할 때와와 관련된 모든 기록 하나의 유형은 하나의 감속기로 분할되어야합니다. 이것은 키 정렬에 의해 보장됩니다. 합성 키를 사용하기 때문에 레코드를 올바르게 분할해야합니다. KeyFieldBasedPartitioner를 "-k1,1"구성으로 사용하고 키 필드 구분 기호를 "%"로 설정했습니다. 객체 식별자 (예 : "common.topic"또는 "m.01dyhm". 하지만 내 구성이 잘못되었다고 생각합니다. 단일 감속기 (Hortonworks VM)와 함께 작동하지만 32 노드 클러스터에서 빈 파일을 방출합니다 (직접 액세스 할 수 없기 때문에 효과적으로 실험 할 수 없습니다). 파티션이 잘못되어 단일 감속기에 참여할 데이터가없는 것 같습니다.
이 내 하둡 명령입니다 : 내 파티션 프로그램 구성 권리
hadoop \
jar $streaming \
-D mapred.job.name='Freebase extract - phase 3' \
-D mapreduce.map.output.key.field.separator='%' \
-D mapreduce.partition.keypartitioner.options=-k1,1 \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \
-input freebase/job1output \
-input freebase/job2output \
-output freebase/job3output \
-mapper "python job3mapper.py" \
-reducer "python job3reducer.py" \
-file job3mapper.py \
-file job3reducer.py
가
? 어떤 도움을 주셔서 감사합니다.
감사합니다.이 옵션을 사용해 보겠습니다. 나는 결과물을 얻지 못한다. 파이썬 코드가 맞습니다. 데이터가 올바르게 정렬되면 단일 감속기와 함께 작동합니다. –
맵퍼/감속기 코드를 게시하면 제공된 예제 데이터에서 클러스터에서 실행하고 내가 얻는 것을 볼 수 있습니다. – Nonnib
선생님이 응답하지 않으므로이 옵션이 도움이되는지 알 수 없습니다. 클러스터에서 사용해 볼 수 있습니까? 불행히도 충분한 관련 데이터가 포함 된 데이터 집합의 하위 집합이 없습니다. 32 노드 클러스터에서 1 시간 이내에 실행해야합니다. [Freebase Triples 데이터 세트] (https://developers.google.com/freebase/data). [코드] (https://github.com/OndroNR/freebase/tree/odovzdanie/python/src/mr_extractor_avro). 당신이 무엇인가를 명확히 할 필요가 있다면 알려주세요. 고마워. –