2016-12-29 11 views
1

열 (emp_id, emp_name, emp_age, emp_update_ts)이있는 직원 테이블이 있다고 가정하면 테이블에 업데이트가있을 때마다 updat_ts 필드가 현재 시간 소인으로 자동 갱신됩니다. 이제 내 질문 :SQOOP 증분 가져 오기 : 행이 데이터베이스에서 삭제 될 때 데이터를 처리하는 방법은 무엇입니까?

테이블의 행을 업데이트/삽입하고 lastmodified와 함께 증분 sqoop 가져 오기를 실행하면 내 데이터베이스와 hdfs가 동기화되지만 "데이터가 테이블에서 삭제 된 후 마지막으로 변경된 옵션으로 sqoop 증분을 실행 하시겠습니까? 또한 HDFS에서 데이터를 삭제하거나 삭제 상태를 처리 할 수있는 다른 방법이 있습니까?

답변

1

SQOOP 증분이 "DELETE"를 지원하지 않습니다. 레코드가 원본 시스템에서 "삭제됨"으로 표시되어 있지 않은 한 말에 따르면 Hortonworks에서 제작 한 매우 흥미로운 document

입니다. 삭제 된 레코드를 가져 오지 않는 테이블에 대한 정신적. 대부분의 트랜잭션 데이터베이스에 이러한 데이터베이스가 얼마나 많은지 놀랄 것입니다.

"DELETE"(표시기 없음) 테이블이있을 경우 준비 영역에서 전체 데이터 집합을 가져온 다음 HIVE에서 "diff"쿼리를 실행하여 삭제 된 레코드를 식별하십시오.

"diff"를 수행하기 위해 HQL 쿼리에서 내 post을 참조하십시오.

2

SQOOP는 가져 오기/내보내기 도구 일뿐입니다. 삭제 된 데이터는 확인하지 않습니다. 가져 오기/내보내기 프로세스가 완료되면 쿼리를 작성하여 수동으로 두 db를 비교해야합니다.

데이터 세트가 작은 경우 임팔라를 통해 CSV로 가져 와서 확인할 수 있습니다.