Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다.
문의사항은 gooper@gooper.com로 메일을
보내주세요.
Oracle LOB타입의 데이터는 일반적인 방법으로 import하면 오류가 발생한다.
(오류 내용 : No Java type for SQL type -11 for column 컬럼명)
원인은 Oracle에서는 catalog정보에서 사용자, 테이블명, 컬럼명을 대문자로 관리하기 때문이다.
sqoop문에 옵션을 추가해줘야 하는데 --query다음에 --map-column-java lob컬럼명=String 이라는 옵션을 추가하여 주는것이다.
여기서 lob컬럼명은 LOB타입의 컬럼명으로 반드시 대문자로 써야한다. 그렇지 않으면 컬럼명을 찾을 수 없다는 오류가 발생하면서 sqoop이 실패하게 된다.
또한 LOB타입 컬럼의 가져오는 길이를 제한하려면 --inline-lob-limit 12000와 같이 제한할 길이를 지정하여 옵션을 준다.
select문장에서 LOB타입의 컬럼을 가공하려 하지 말것. 가공하게 되면 sqoop하는 과정에서 다음과 같은 오류를 만나게 된다. sqoop import할때는 있는 그대로 가져와서 필요시 가공할것.
1. substr(cast(lob컬럼명 as varchar2(4000)), 12000) as rst 와 같이 가공한 경우
ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion(actual: 35090, maximum:4000) <- 최대 지원 가능한 크기는 4000인데 35090 크기의 데이터가 있어서 오류가 발생하는것임.
2. dbms_lob.substr(lob컬럼명, 5000, 1) as rst와 같이 가공한 경우
ORA-06502: PL/SQL: numeric or value error: character string buffer too small <- 최대 지원 가능한 크기는 4000인데 35090 크기의 데이터가 있어서 오류가 발생하는것임.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
400 | insert hbase by hive ... error occured after 5 hours..HMaster가 뜨지 않는 장애에 대한 복구 방법 | 총관리자 | 2014.04.29 | 7129 |
399 | oozie가 말하는 start시간은..서버에서 확인되는 시간이 아닙니다. | 총관리자 | 2014.05.14 | 699 |
398 | sqoop export/import등을 할때 driver를 못찾는 오류가 발생하면... | 총관리자 | 2014.05.15 | 867 |
397 | sqoop에서 oracle관련 작업할때 테이블명, 사용자명, DB명은 모두 대문자로 사용할것 | 총관리자 | 2014.05.15 | 1528 |
396 | dual table만들기 | 총관리자 | 2014.05.16 | 824 |
395 | 특정파일이 생성되어야 action이 실행되는 oozie job만들기(coordinator.xml) | 총관리자 | 2014.05.20 | 984 |
394 | source의 type을 spooldir로 하는 경우 해당 경로에 파일이 들어오면 파일단위로 전송함 | 총관리자 | 2014.05.20 | 687 |
393 | hive에서 insert overwrite directory.. 로 하면 default column구분자는 'SOH'혹은 't'가 됨 | 총관리자 | 2014.05.20 | 999 |
392 | import 혹은 export할때 hive파일의 default 구분자는 --input-fields-terminated-by " |