2013-12-13 3 views
0

하이브를 사용하기 전에 작성된 일련의 하둡 플로우가 있습니다. Hive를 추가 할 때 데이터 파일을 외부 테이블로 구성했습니다. 이제 우리는 HCatalog를 사용하여 결과를 출력하기 위해 흐름을 다시 작성하는 것에 대해 생각하고 있습니다. 변화를 만드는 주된 동기는 동적 파티셔닝을 이용하는 것입니다.단일 감속기에서 여러 HCatalog 스키마에 쓰기?

내가 감당할 수있는 장애물 중 하나는 일부 감속기가 여러 데이터 세트를 생성한다는 것입니다. 오늘 이것은 부작용 파일들로 끝납니다. 그래서 우리는 하나의 reduce 단계에서 각 레코드 유형을 그것의 고유 한 파일에 써 넣습니다. 그리고 HCatalog로 이것을하기위한 나의 옵션이 무엇인지 궁금합니다.

하나의 옵션은 분명히 각 작업이 각 유형에 대해 데이터를 한 번 재 처리하는 단일 레코드 유형을 생성하도록하는 것입니다. 나는 이것을 피하고 싶다.

일부 작업의 또 다른 옵션은 모든 레코드가 단일 스키마에 저장되도록 스키마를 변경하는 것입니다. 분명히이 옵션은 HCatalog가 필드를 기반으로 데이터의 분할을 처리 할 것이기 때문에 빈약 한 사람의 분할을 위해 데이터가 분리 된 경우 잘 작동합니다. 그러나 다른 작업의 경우 레코드 유형이 일관되지 않습니다.

필자는 Writer 컨텍스트를 스키마 당 하나씩 전달하기 위해 Reader/Writer 인터페이스를 사용할 수는 있지만 실제로 생각하지는 못했지만 (HCatalog 만 보았습니다. 하루 동안, 나는 리더/라이터 인터페이스를 오해하고있을 수 있습니다.)

아무도 단일 감소 단계에서 여러 스키마 작성 경험이 있습니까? 모든 포인터가 많이 감사 할 것입니다.

감사합니다.

앤드류

답변

0

이 가장 잘 알 수,이 작업을 수행하는 적절한 방법은 MultiOutputFormat 클래스를 사용하는 것입니다. 가장 큰 도움은 하이브의 TestHCatMultiOutputFormat 테스트입니다.

앤드류