728x90
반응형
FAILED: SemanticException [Error 10034]: Duplicate column name column_name in the table definition.
Hive 테이블의 format을 orc로 변경 후에 데이터를 적재할 때 발생했던 오류이다.
DB 에 있는 데이터가 아닌 파일 데이터라, 스키마 structure 를 저장해 두고 그에 맞게 저장하고 있는데, 컬럼 값들이 대문자여서 에러가 났다. 데이터를 전부 삭제하고 적재해도 데이터가 전부 NULL로 들어가는 이슈 발생 txt 포맷일 때는 한 번도 본 적 없던 에러가 왜 orc로 변경 후에 나타날까
원인
1. txt 포맷은 스키마 매칭이 유연하다.
2. orc 포맷은 스키마 매칭에 엄격하다.
Hive는 내부적으로 스키마 정보를 소문자로 저장한다. txt 포맷일 때는 dataframe의 스키마를 대문자로 지정해도 유연하게 데이터가 적재되었지만, orc는 스키마 매칭에 엄격하기 때문에 대소문자 구별을 해서 해당 에러가 발생한 것.
해결 방법
hive.support.sql11.reserved.keywords=false 설정도 해 보았으나 안 되는 걸로 봐서 그냥 대문자-> 소문자로 변경하는 것이 정신 건강에 옳을 듯싶다. 그래서 스키마 정보를 저장해 두었던 딕셔너리에서 컬럼명을 소문자로 변경했다.
728x90
반응형
'Data Engineering > Hive' 카테고리의 다른 글
| [이슈 기록] 데이터에 개행 문자가 있다면 HIVE row가 분리된다 (2) | 2025.08.05 |
|---|---|
| [HIVE] 기존 하이브 테이블 포맷 변경하기 (txt -> orc) (0) | 2025.03.21 |
| [Hive] 하이브 테이블의 Format을 ORC로 변경하기 (0) | 2025.03.20 |