2014-05-15 3 views
-1

나는 모든 주문과 생성 된 날짜 (키는 주문 번호)를 찾으려면 table1을 쿼리해야합니다.시간이 걸리는 두 테이블의 데이터 비교

표 2 (키는 주문 번호입니다) 날짜가있는 주문이 있는지 확인하십시오. 내가 테이블 하나를 스캔하고이를 위해 그것을 표 2. 키가 두 테이블 모두에 대해 동일 인이 상황에서이

+0

코드를 보여 주시겠습니까? – Tariq

답변

0

을 할 수있는 더 나은 방법에 존재하는지 확인 각 레코드에 대한

, 그것은에 의미가 있습니다 표 1과 표 2에 대한 데이터를 모두 저장하는 단일 표가 있어야합니다. 이렇게하면 데이터를 한 번 스캔하고 두 기준에 대한 데이터가 있는지 즉시 알 수 있습니다.

MapReduce에서이 데이터를 사용하려면이 단일 테이블을 스캔하기 만하면됩니다. 관련 행을 가져 오려면 스캔에서 필터를 정의하면됩니다. 예를 들어, 표 2에서 행을 채우지 않을 경우에는 단순히 ColumnPrefixFilter

두 개의 테이블에서이 데이터를 별도로 유지해야하는 경우 사전 분할 할 수 있습니다 두 테이블에 대해 동일한 영역 경계를 가진 테이블 - 이것은 목표로하는 쿼리를 수행 할 때 도움이 될 것입니다 - 표 2에 행이있을 때 표 1의 모든 행을로드하십시오. 기본적으로 이것이 맵면 조인입니다. MapReduce 작업에서 여러 개의 입력을 정의 할 수 있으며 영역 경계가 동일하므로 각 매퍼가 두 테이블의 해당 행을 갖게됩니다. 아마도 자신의 MultipleInput 형식을 구현해야 할 것입니다. (최근에 소개 된 MultiTableInputFormat 클래스는지도 측 조인을하지 않는 것 같습니다)