2011-07-17 4 views
6

위키피디아 데이터 덤프 (bz2 형식으로 압축)에 대한 연구를하기 위해 Hadoop Map Reduce를 사용하고 있습니다. 이 덤프는 너무 크기 때문에 (5T), xml 데이터를 HDFS로 압축 해제 할 수 없으며 hadoop이 제공하는 StreamXmlRecordReader를 사용합니다. Hadoop은 bz2 파일의 압축을 지원하지만 페이지를 임의로 분할하여 해당 파일을 매퍼로 보냅니다. 이것이 xml이기 때문에 우리는 태그가되기 위해 스플릿이 필요합니다. 어쨌든 hadoop이 제공하는 bz2 압축 풀기와 스트림 xml 레코드 리더를 함께 사용 하시겠습니까?압축 된 bz2 (bzip2)를 읽는 방법 위키피디아 덤프를 스트림으로 가져 오기 hadoop 맵을 줄이기 위해 xml 레코드 리더를 줄입니다.

+0

왜 페이지별로 태그를 분할해야합니까? – svick

+0

태그로 분할하여 파이썬에서 파서를 사용하여 분석해야하는 데이터를 얻을 수 있기를 원합니다 (우리는 이전 버전과 모든 페이지의 텍스트에 대해 다양한 유형의 분석을 수행 할 것입니다). –

+0

100Gb를 초과하는 수많은 페이지가 있기 때문에 태그로 분할하면 태그를 실행할 수 없습니다. 방금 출시 한 InputReader에 대한 전체 답변을보십시오. – DrDee

답변

0

문제는 here과 동일합니다. 그래서 내 대답은 동일합니다. TextInputFormat에 변형을 직접 만들어야합니다. 거기에서 논리적 인 라인의 시작을 볼 때까지 라인을 건너 뛴 새로운 RecordReader를 만듭니다.

7

위키 미디어 재단은 bz2 압축 풀 덤프 파일을 읽고이를 매퍼에게 보낼 수있는 Hadoop Streaming 인터페이스 용 InputReader를 방금 발표했습니다. 유닛이 매퍼로 전송되는 것은 전체 페이지가 아니라 두 개의 리비전 (실제로 두 리비전에서 diff를 실행할 수 있음)입니다. 이것은 초기 릴리스이며 몇 가지 버그가있을 것이라고 확신하지만 스핀을주고 테스트 해보십시오.

Hadoop 0.21은 bz2 파일을 스트리밍 지원하므로이 InputReader는 Hadoop 0.21이 필요합니다. 소스 코드는 다음에서 제공됩니다. https://github.com/whym/wikihadoop