2017-11-13 16 views
1

원본 시스템 데이터웨어 하우스에서 HDFS로 배치하려고하는 매우 큰 테이블이 있지만 한정된 대역폭을 사용합니다. 필자가 필요로하는 컬럼을 끌어오고 테이블을 가져 오는 런타임을 최소화하고 싶습니다.조인이 포함 된 테이블에서 증분 Sqoop을 수행 하시겠습니까?

Sqoop을 현재 같은 것을 가져옵니다 :

SELECT 
    ColumnA, 
    ColumnB, 
    .... 
    ColumnN 
FROM 
    TABLE_A 
LEFT JOIN 
    TABLE_B 
ON 
    ... 
LEFT JOIN 
    TABLE_N 
.... 

데이터가 스타 스키마 형식으로 저장됩니다 주어진 증분 Sqoop을을 수행 할 수 있는가, 그리고 치수는 독립적으로 사실을 갱신 할 수 ?

또는 전체 테이블을 sqoop하고 필요한 열을 점진적으로 매핑하고 HDFS 측에서 조인을 수행하는 유일한 솔루션입니까?

답변

1

증분 가져 오기의 경우 --incremental 플래그를 사용해야합니다. 더 많은 정보를 원하시면 아래 링크를 참조하십시오 : -

https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports

당신이 증분로드 -check 열이 증가 sqooping와 - 마지막에 사용되는 열을 지정하려면 Sqoop을 알려 -incremental 지정해야 당신이 다음로드를 sqooping하기를 원하는 값부터 말하십시오. 이것은 그림의 절반에 불과합니다. 이를 위해 더 많은 방법이 있습니다. 예를 들면. -query 옵션을 사용할 수 있고 쿼리는 Select * from table where column> 123과 같을 것입니다. 이것은 기본적으로 같은 것입니다. 선택한 열의 마지막/최대 값을 기록하고 다음 가져 오기에 사용해야합니다.

+1

내 경우에는 lastmodified 모드를 사용해야 할 것입니다. KEY를 사용하면 확실히 작동하지 않을 것입니다. 나는 소스 테이블을 체크 아웃 할 것입니다. 거기에 lastmodified에 대한 여러 필드를 사용하는 방법이 있나요? – boethius

+1

좋습니다. 나는 이것이 나를 끌어 들일만큼 충분하다고 생각한다. 나는 많은 사용자들이 자체적으로 증가하는 문제를 안고 있지만 적어도 시작할 수는있다. 앞으로 발행 될 문제가 있으면 별도의 질문을 할 것입니다. – boethius