2017-02-08 13 views
0

대형 텍스트 파일을 처리하는 맵 전용 작업이 있습니다. 각 라인은 분석되고 범주화됩니다. MultipleOutputs는 각 카테고리를 개별 파일로 출력하는 데 사용됩니다. 결국 모든 데이터가 각 카테고리 전용 하이브 테이블에 추가됩니다. 현재의 워크 플로우는 일을 처리하지만 조금 번거 롭습니다. 몇 가지 카테고리를 추가 할 예정이며 프로세스를 합리화 할 수 있다고 생각했습니다. 몇 가지 아이디어가 있었고 몇 가지 의견을 찾고있었습니다.하이브 테이블에 Hadoop 작업 결과 추가

현재 워크 플로우 :

  1. 지도 전용 작업이 범주로 큰 파일을 분할.
    categ1-m-00000
    categ1-m-00001
    categ1-m-00002
    categ2-m-00000
    categ2-m-00001
    categ2- : 출력은 다음과 같다 m-00002
    categ3-m-00000
    categ3-m-00001
    categ3-m-00002
,617,
  1. 외부 (Hadoop이 아닌) 프로세스는 출력 파일을 각 카테고리의 개별 디렉토리에 복사합니다.
    categ1/00000
    categ1/00001
    categ1/00002
    categ2/00000
    categ2/00001
    categ2/00002
    categ3/00000
    categ3/00001
    categ3/00002
  1. 각 범주에 대해 외부 테이블이 만들어진 다음 해당 범주에 대한 영구 하이브 테이블에 데이터가 삽입됩니다.

가능한 새로운 워크 플로우

  • 를 사용하여 출력 파일을 통해 루프 스파크, 파일 이름에 따라, 적절한 영구적 인 하이브 테이블에 데이터를 삽입합니다.
  • HCatalog를 사용하여 Mapper에서 직접 영구 하이브 테이블에 데이터를 삽입하거나 각 카테고리 전용 Reducer 또는 Reducer 세트를 삽입하십시오.

답변

0

MultipleOutputs의 경우 하이브 외부 테이블이있는 기본 폴더의 출력 경로를 설정합니다. 그런 다음 데이터를 "<table_name>/<filename_prefix>"에 씁니다. 그러면 데이터가 목표 테이블에 위치합니다.

+0

매력처럼 작동했습니다! 나는 그 버전의 글을 놓친다는 것을 믿을 수 없다. –