복붙노트

[HADOOP] Sqoop - 데이터 분할

HADOOP

Sqoop - 데이터 분할

Sqoop은 --query 절을 사용하여 여러 테이블에서 데이터를 가져올 수 있지만 쿼리 아래에서 가져올 수 있는지 여부는 명확하지 않습니다.

또 다른 질문은

$ CONDITIONS 및 split-by는 병렬 처리를 수행하는 데 사용되거나 효율적으로 데이터를 가져 오는 것으로 말할 수 있습니다. 이전은 조건을 기반으로 행을 분할하고 나중에 기본 키에서 min 및 max 논리를 사용합니다. 이 두 가지의 차이점은 무엇입니까 ($ 조건, 나누기). 우리가 같은 sqoop 문에서 둘 다 사용한다면, 어느 절이 우선 순위를 가질 것인가?

감사....

해결법

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

    1.이해하는데 약간의 차이가 있습니다.

    이해하는데 약간의 차이가 있습니다.

    우선, 병렬 처리 수준은 -m 또는 --num-mappers 에 의해 제어됩니다. --num-mappers의 기본값은 4입니다.

    둘째, --split-by 은 column-name에 기초하여 작업을 분할합니다.

    셋째, $ CONDITIONS,이 분할 작업을 달성하기 위해 내부적으로 sqoop에 사용됩니다.

    예, 당신은 쿼리를 해고했습니다 :

    sqoop import --connect jdbc : mysql : // myserver : 1202 / --username u1 --password p1 --query 'select * from emp where $ CONDITIONS'--split-by empId --target-dir / temp / emp -m 4

    말하자면 제 능력은 1에서 100까지 균일하게 분포되어 있습니다.

    이제 sqoop은 --split-by 열을 취하고 쿼리를 사용하여 최대 값과 최소값을 찾습니다.

    $ 조건을 (1 = 1)로 대체했습니다.

    우리의 경우 min, max 값은 1과 100입니다.

    매퍼의 수가 4이므로 sqoop은 내 쿼리를 4 부분으로 나눕니다.

    이제 $ 조건이 다시 나타납니다. 위의 범위 쿼리로 대체됩니다.

    첫 번째 매퍼는 다음과 같이 쿼리를 실행합니다.

    다른 3 개의 매퍼에 대해서도 마찬가지입니다.

    모든 맵퍼의 결과가 집계되어 최종 HDFS 디렉토리에 기록됩니다.

    귀하의 질의에 관하여 :

    deptid에 의해 emp 그룹에서 평균, 평균 (salary)을 선택하십시오

    너는 지정할거야.

    그것은 처음으로 변환 될 것입니다.

    열 메타 데이터를 가져옵니다.

    이 쿼리는 RDBMS에서 실행되지 않습니다. 위 쿼리 (Where (1 = 0))를 MySQL에서 직접 사용해보십시오.

    따라서이 쿼리를 사용하여 Sqoop을 사용하여 데이터를 가져올 수 없습니다.

    Sqoop은보다 간단한 SQL 쿼리에 사용됩니다.

  2. ==============================

    2.'empid <1123 및 $ CONDITIONS'인 emp에서 Select *를 선택하면 RDBMS에서 HDFS로 데이터를 가져올 수 있습니다.

    'empid <1123 및 $ CONDITIONS'인 emp에서 Select *를 선택하면 RDBMS에서 HDFS로 데이터를 가져올 수 있습니다.

    $ CONDITIONS가 먼저 where 절에서 1 = 0으로 평가 되더라도 콘솔에서 Sqoop 가져 오기 로그를 보면 $ CONDITIONS를 1 = 1로 대체하는 다른 SQL Val 경계 쿼리가 실제로 표시되어 쿼리를 전달하므로 데이터를 가져올 수 있습니다.

    Sqoop은 조인과 같은 중간 규모의 복잡한 SQL 쿼리를 가져올 수 있습니다. 매우 복잡한 SQL 쿼리를 지원할 수 있는지 확실하지 않지만 직접 테스트하지는 않았습니다.

  3. from https://stackoverflow.com/questions/37042357/sqoop-data-splitting by cc-by-sa and MIT license