[Hive] Duplicate column name column_name in the table definition. 에러 발생 원인과 해결 방법
·
Data Engineering/Hive
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는 내부적으로 스키마 정보를 소문자로 ..
[HIVE] 기존 하이브 테이블 포맷 변경하기 (txt -> orc)
·
Data Engineering/Hive
[Hive] 하이브 테이블의 Format을 ORC로 변경하기 [Hive] 하이브 테이블의 Format을 ORC로 변경하기하이브 테이블의 포맷을 ORC 로 포맷을 변경하게 된 이유주기적으로 데이터를 삭제해야 하는 트랜잭션이 발생일정 범위의 데이터를 삭제해야 하는데, 이 작업이 txt 포맷에서는 되지 않음새로운m8o9.tistory.com첫 번째 과정은 위 글에 작성해 두었다 코드 수정과 설정 추가에 초점을 맞춘 포스팅이번에는 이미 적재해 둔 하이브 테이블의 format을 어떻게 변경했는지 적어 보겠다 하이브 테이블의 format을 바꾸는 데에는 총 두 가지 방법이 있다.1️⃣ 테이블을 새로 생성한 뒤 데이터를 옮기는 방법2️⃣ 테이블을 변경(ALTER)하는 방법2 번 방법이 훨씬 편하지만 안전성을 생각한다..
[Hive] 하이브 테이블의 Format을 ORC로 변경하기
·
Data Engineering/Hive
하이브 테이블의 포맷을 ORC 로 포맷을 변경하게 된 이유주기적으로 데이터를 삭제해야 하는 트랜잭션이 발생일정 범위의 데이터를 삭제해야 하는데, 이 작업이 txt 포맷에서는 되지 않음새로운 컬럼 추가 시, 추가되었다는 문자열을 프린트하는데, 업데이트가 되지 않아 새로운 컬럼이 추가되지 않았음에도 계속 문자열이 추가됨하이브에 최적화된 파일 형식이 ORC라고 한다즉 ACID를 위해서는 파일 포맷을 ORC로 변경하는 게 최선기존 저장 방식df.write.format('hive')최초 저장과 데이터 추가 전부 포맷을 hive로 지정하여 저장하고 있었다.최초 저장 시에는 기본 값인 txt 포맷으로 테이블이 저장되고, 데이터 추가 시에는 기존 테이블의 포맷을 따라 저장된다Hive에 저장된 테이블은 모두 txt 포맷..