가상 컬럼

가상 컬럼 (Virtual Columns)

가상 컬럼

Hive 0.8.0은 두 가지 가상 컬럼을 지원해요.

하나는 INPUT__FILE__NAME으로, 매퍼(mapper) 작업의 입력 파일 이름이에요.

다른 하나는 BLOCK__OFFSET__INSIDE__FILE로, 현재의 전역 파일 위치(global file position)입니다. 블록 압축(block compressed) 파일의 경우 현재 블록의 파일 오프셋, 즉 현재 블록의 첫 바이트 파일 오프셋을 의미해요.

Hive 0.8.0 이후로 다음 가상 컬럼들이 추가되었어요.

  • ROW__OFFSET__INSIDE__BLOCK
  • RAW__DATA__SIZE
  • ROW__ID
  • GROUPING__ID

중요한 점은, 여기에 나열된 가상 컬럼들은 다른 어떤 목적으로도 사용할 수 없다는 거예요. (가상 컬럼 이름으로 테이블을 만들면 SemanticException Error 10328: Invalid column name.. 오류가 발생합니다.)

출처: 문서

본문

간단한 예제 (Simple Examples)

select `INPUT__FILE__NAME`, key, `BLOCK__OFFSET__INSIDE__FILE` from src;

select key, count(`INPUT__FILE__NAME`) from src group by key order by key;

select * from src where `BLOCK__OFFSET__INSIDE__FILE` > 12000 order by key;

더 알아보기 (Learn more)

가상 컬럼은 파일 경로, 파일 내 오프셋, 행 ID 같은 물리적 메타데이터를 쿼리에서 접근할 수 있게 해 줘요. 데이터 프로파일링이나 디버깅, 파일 위치 기반 필터링에 유용하지만, 일반 컬럼 이름으로 사용할 수는 없답니다.