[HADOOP] Sqoop - 데이터 분할
HADOOPSqoop - 데이터 분할
Sqoop은 --query 절을 사용하여 여러 테이블에서 데이터를 가져올 수 있지만 쿼리 아래에서 가져올 수 있는지 여부는 명확하지 않습니다.
또 다른 질문은
$ CONDITIONS 및 split-by는 병렬 처리를 수행하는 데 사용되거나 효율적으로 데이터를 가져 오는 것으로 말할 수 있습니다. 이전은 조건을 기반으로 행을 분할하고 나중에 기본 키에서 min 및 max 논리를 사용합니다. 이 두 가지의 차이점은 무엇입니까 ($ 조건, 나누기). 우리가 같은 sqoop 문에서 둘 다 사용한다면, 어느 절이 우선 순위를 가질 것인가?
감사....
해결법
-
==============================
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.'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 쿼리를 지원할 수 있는지 확실하지 않지만 직접 테스트하지는 않았습니다.
from https://stackoverflow.com/questions/37042357/sqoop-data-splitting by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HBase와 Hadoop / HDFS의 차이점 (0) | 2019.05.30 |
---|---|
[HADOOP] OOZIE : global job-xml에서 참조 된 파일에 정의 된 속성이 workflow.xml에 표시되지 않습니다. (0) | 2019.05.30 |
[HADOOP] 내 BroadcastHashJoin이 Spark의 ShuffledHashJoin보다 느린 이유 (0) | 2019.05.30 |
[HADOOP] Apache Spark에서 정확한 중간 값을 어떻게 계산합니까? (0) | 2019.05.30 |
[HADOOP] hadoop의 -libjars 문제 (0) | 2019.05.30 |