1) 파일
당신은 하둡 스트리밍을 사용하는 경우, 당신은 온라인 기반의 텍스트 파일을 사용할 수 있고, 첫 번째 탭까지의 데이터는 키와 같은 매퍼에 전달됩니다.
스트리밍은 the documentation입니다.
대용량 파일에 적합 할 수있는 입력 파일을 HDFS에 넣을 수도 있습니다. 위의 링크에서 "큰 파일"섹션을보십시오.
2) 메타 데이터 보존은
내가 볼 문제는 헤더 정보 (메타 데이터) 그러한 데이터로 처리 될 것입니다, 그래서 당신은 자신 (첫 번째 단계)하여 필터링해야합니다. 모든 입력 파일의 데이터가 map-step 후에 조인되기 때문에이를 전달하는 것이 더 어렵습니다.
메타 데이터를 데이터 자체에 추가해야합니다 (두 번째 단계). 나중에 메타 데이터를 추가 할 수 있습니다. 파일의 각 데이터 라인에 대해 (키, 데이터 + 메타 데이터)를 방출 할 수 있으므로 각 데이터 라인의 메타 데이터를 보존 할 수 있습니다. 엄청난 오버 헤드가 될 수 있지만, MapReduce는 다음과 같은 의미입니다 : pfffrrrr)
이제 실제로 스트리밍이 Java 구현 작업과 얼마나 다른지 알 수없는 부분이 있습니다. 스트리밍으로 파일 당 하나의 매퍼를 호출하면 map()의 첫 번째 입력을 메타 데이터로 가져와 다음의 모든 데이터 방출에 추가 할 수 있습니다. 그렇지 않다면 다음은 Java-Jobs에 관한 것입니다 :
적어도 JAR-Mapper를 사용하면 데이터를 입력 파일과 관련시킬 수 있습니다 (here 참조). 그러나 맵핑 기능은 메타 데이터가 포함되지 않은 파일의 파티션에서 호출 될 수 있기 때문에 먼저 메타 데이터를 추출해야합니다.
는 HDFS
JAR-을 사용하여에이 메타 데이터 색인을 넣어 FILEX, metadatax : keyx : 자리 색인을 포함,
- 미리 메타 데이터 파일을 생성 : 나는 그런 일을 제안 것 매퍼, 설치 중로드() 메타 데이터 인덱스 파일
- org.apache.hadoop.hdfs를 참조하십시오.당신은 하둡 스트리밍을 사용하는 경우
- 은 (맵에 각 방출 데이터 라인에 추가이 매퍼)를 사용 keyx에 대한 keyx 설정 DFSClient
- 경기가 filex는
좋아, 내가 XML 파일을 사용하여 물건을 쓸 수 있고 텍스트 파일을 다음과 같은 내용으로 분할 할 수 있다고 생각한다 : actual_info> 각 텍스트 파일. 귀하의 설명을 많이 주시면 감사하겠습니다. - 그러나 나는 확실히 분실했습니다 : ~ ( –
lw2010
)지도()에서 meta_data를 더 잘 판단하는 데 도움이됩니다. 그럼에도 불구하고 전체지도()에서이를 유지해야합니다.참조 : map()이 (key1, value1), (key2, value2), ..., (key_maximumline, value_maximumline) 쌍으로 연속적으로 호출되는 경우 모든 데이터에 추가합니다.)하지만 각 파일/메타 데이터 컨테이너에 대해 reduce()가 호출됩니다. (map_emitted_key, (이 키에 대한 모든 map_emitted_values 목록)) ... 이렇게하면 줄일 때 메타 데이터를 알고 싶을 때 어떻게 든 map_emitted_value (또는 키를 사용하십시오 ...) – Leonidas