복붙노트

[HADOOP] Custom Mapper and Reducer 대 HiveQL

HADOOP

Custom Mapper and Reducer 대 HiveQL

문제 설명:-

나는 두 테이블 Table1과 Table2를 비교할 필요가 있으며 둘 다 같은 것을 저장한다. 그래서 Table1은 비교가 필요한 주 테이블이므로 Table2와 Table1을 비교해야합니다. 그래서 비교를 한 결과 Table2에 일종의 불일치가 있다는 보고서를 작성해야합니다. 그리고이 두 테이블은 데이터 결핵 주위에 많은 데이터를 가지고 있습니다. 그래서 현재 비교를하고 데이터를 다시 얻기 위해 HiveQL을 작성했습니다.

그래서 내 질문에 성능면에서 더 낫다. CUSTOM MAPPER와 REDUCER를 작성하여 이런 종류의 작업을 수행하거나 HiveQL을 작성하면 수백만 건의 레코드에이 두 테이블을 추가 할 수 있기 때문에 괜찮을 것이다. 내가 아는 한 HiveQL은 내부적으로 (장면 뒤에서) 최적화 된 맞춤형지도 감속기를 생성하고 실행을 위해 제출하고 결과를 되돌립니다.

해결법

  1. ==============================

    1.귀하의 질문에 대한 답은 두 가지입니다.

    귀하의 질문에 대한 답은 두 가지입니다.

    첫째, 하이브 QL 구문으로 표현할 수있는 프로세싱이 있다면, 하이브의 성능은 커스텀 맵 - 리퀴드를 작성하는 것과 유사하다고 주장 할 것입니다. 유일하게 잡히는 부분은 맵에서 사용하는 데이터에 대한 몇 가지 추가 정보가있는 경우입니다. 코드를 줄이고 하이브를 사용하는 것은 아닙니다. 예를 들어, 데이터가 정렬 된 경우 맵퍼에서 파일 분할을 처리 할 때이 정보를 사용할 수 있습니다. 반면 Hive에이 정렬 순서를 알리지 않으면 해당 정보를 해당 분할 영역에 사용할 수 없습니다. 이점. 메타 데이터 또는 구성 등록 정보를 통해 이러한 추가 정보를 지정하는 방법이 있지만, Hive가이 정보를 사용할 수있는 방법이 없을 수도 있습니다.

    둘째, 때로는 처리가 SQL 문과 같이 쉽게 표현할 수 없을 정도로 복잡하게 될 수 있습니다. 이러한 경우에는 일반적으로 처리하는 동안 간헐적 인 상태를 저장해야합니다. 하이브 UDAF는이 문제를 어느 정도 완화합니다. 그러나 더 많은 사용자 지정이 필요한 경우 하이브 변환 기능을 사용하여 사용자 지정 매퍼 및 / 또는 감속기를 항상 연결하는 것이 좋습니다. 이 기능을 사용하면 Hive 쿼리의 컨텍스트 내에서 map-reduce를 활용할 수 있으므로 하이브 SQL과 같은 기능을 사용자 지정 맵 축소 스크립트와 동일한 쿼리에서 모두 혼합 및 일치시킬 수 있습니다.

    간단히 말해서, 하이브 QL 쿼리를 통해 처리가 쉽게 표현 될 수 있다면, 동일한 결과를 얻기 위해 map-reduce 코드를 작성할 이유가별로 없습니다. Hive가 만들어진 주된 이유 중 하나는 우리 같은 사람들이 map-reduce를 작성하는 대신 SQL과 같은 쿼리를 작성할 수 있도록 허용하는 것이 었습니다. 성능상의 이유로 또는 다른 이유로 Hive 쿼리가 아닌 map-reduce를 작성하게되면 Hive가 주요 목적을 달성하지 못했다고 주장 할 수 있습니다. 반면에 Hive가 사용할 수없는 데이터에 대한 정보가 있다면 해당 정보를 사용하는 맞춤형지도 - 축소 구현을 작성하는 것이 좋습니다. 그러나 이전에 언급 한 하이브 (Hive) 변환 기능을 사용하여 맵퍼 및 리듀서를 간단히 연결할 수있을 때 전체 맵 축소 프로그램을 작성할 필요가 없습니다.

  2. from https://stackoverflow.com/questions/11404163/custom-mapper-and-reducer-vs-hiveql by cc-by-sa and MIT license