Hive의 MultiDelimitSerDe 테이블은 조회되지만 Impala에서 Invalid delimiter: '||' 또는 TableLoadingException이 발생한다.
원본에서는 해당 Impala의 다중 문자 구분자 미지원이 확인됐으며 변환 실행 결과는 없다. Parquet 변환은 공식 형식 호환 문서에 근거해 추가한 우회 절차다.
원본은 Hive로 읽고 별도 Parquet 테이블에 변환한 다음 Impala에서 조회한다. SerDe 클래스명을 바꾸는 것만으로 Impala 지원이 추가되지는 않는다.
확인 수준: 추가 조사 해법 · 해당 케이스 적용 결과 미확인
적용 조건: <...>와 예시 DB·테이블·경로·수치는 실제 확인값으로 바꾼다. 명령과 메뉴는 참고 문서를 바탕으로 보강한 예시이며 대상 시스템에서 실행하지 않았다. 버전·원인에 따른 분기와 남은 확인 사항은 아래에 명시한다.
SHOW CREATE TABLE db.source_multi;와 샘플 행을 확인한다. Hive에서도 SerDe 클래스를 못 찾으면 먼저 Hive MultiDelimitSerDe 클래스를 찾지 못해 테이블 생성이 실패하는 증상의 절차로 해결한다.id BIGINT, payload STRING인 비파티션 예시다. 컬럼과 타입을 실제 스키마에 맞추고, 원본과 겹치지 않는 새 비어 있는 HDFS 경로를 정한다. 기존 경로에 덮어쓰지 않는다.-- Hive / Beeline에서 실행
CREATE EXTERNAL TABLE db.multi_parquet_review (
id BIGINT,
payload STRING
)
STORED AS PARQUET
LOCATION '/data/kb_validation/multi_parquet_review';
INSERT INTO TABLE db.multi_parquet_review
SELECT id, payload FROM db.source_multi;
SELECT COUNT(*) FROM db.source_multi;
SELECT COUNT(*) FROM db.multi_parquet_review;
SELECT id, payload FROM db.multi_parquet_review LIMIT 20;
-- Impala에서 실행
INVALIDATE METADATA db.multi_parquet_review;
SELECT COUNT(*) FROM db.multi_parquet_review;
SELECT id, payload FROM db.multi_parquet_review LIMIT 20;
ALTER TABLE ... SET FILEFORMAT PARQUET만 실행하면 텍스트 파일 자체는 변환되지 않는다.Impala metadata 로딩이 성공하고 Hive 원본과 변환 테이블의 행 수 및 대표 값이 일치하는지 확인한다.