본문 바로가기

sqoop export3

sqoop upsert시 Mixed update/insert is not supported against the target database yet sqoop export 를 이용하여 타겟테이블에 통으로 적재하고자 하는데, 일반적인 ETL 툴 처럼 Truncate & Insert가 불가할 것으로 생각되었음. sqoop export에서 아래와 같은 파라미터를 추가하면 upsert 유사한 기능을 제공함. --update-key column_name \ --update-mode allowinsert --update-mode를 명시하지 않으면 (디폴트: updateonly) update-key 컬럼 기준 변경된 부분이 없으면, insert 되지 않고 종료됨. 그러나, 해당 기능은 일부 타겟 DB에 한정됨 ( 가능 : Oracle, Mysql, Postresql ) ex) 타겟DB - Vertica 경우 아래와 같은 에러 발생 Mixed update/inse.. 2021. 4. 2.
sqoop export 시 org.apache.parquet.io.ParquetDecodingException sqoop export 시 아래와 같은 에러 발생하는 경우. Error: org.apache.parquet.io.ParquetDecodingException: Can not read value at 1 in block 0 in file hdfs://xxx stdout에서는 위처럼 나오지 않고, yarn applicaiton 로그를 봐야 확인 됨. 소스파일은 parrquet 포맷. 소스파일의 일부 필드에 null 값이 있었음. (타겟테이블에서 해당 컬럼들은 timestamp, parquet에서는 unix timestamp 값으로 bigint) 아래 경우에는 정상수행 - pyspark으로 해당 필드 isNotNull() 으로 발라내서 별도 경로에 write한 후 해당 파일을 export 시에는 정상 수행 -.. 2021. 4. 2.
sqoop export 지난번에 sqoop 주요 명령어 별 기본 파라미터에 대해 포스팅 하였습니다. 2021.02.21 - [학습장] - Sqoop ETL 금일은 sqoop export 관련 테스트시 확인하였던 내용들을 기록하고자 합니다. parquet 파일로 테스트시 -m 값과 관계없이 해당 경로에 쪼개져 있는 parquet 갯수만큼 맵퍼가 할당되었다. 타겟 DB에서는 insert into (col1, col2, .. ) values (val1, val2, ...), ( ), ( ) ... 구문으로 적재되는데, 이 구문으로 insert시 1개 row만 허용되는 DB도 있음. ex) vertica insert into (col1, col2, .. ) values (aaa, aaa, ...) ,(bbb, bbb, ...) ,(c.. 2021. 3. 12.
728x90