외부 테이블(External Table)은 이미 HDFS에 존재하는 원본 데이터를 기반으로 테이블을 만들기 때문에 스키마만 정해주면 됩니다. 그래서 파일와 스키마를 따로 관리하기 좋습니다. 파일이 HDFS 상에 이미 있을 때 외부 테이블을 사용하고, 테이블이 삭제 되더라도 파일은 남아 있습니다.
서데(SerDe, Serializer/Deserialaizer)는 하이브가 데이터를 해석하는 방법을 제공합니다. 하이브는 서데와 파일 포맷을 이용하여 데이터를 읽고, 쓸 수 있습니다.
Avro, ORC, Parquet 은 서데와 인풋, 아웃풋 포맷이 설정됩니다. 나머지는 기본 LazySimpleSerDe와 파일에 따른 인풋, 아웃풋 포맷이 설정1됩니다.
테이블에서 로드할 데이터의 저장 위치
테이블 생성시 필요한 프로퍼티를 작성합니다.
CREATE EXTERNAL TABLE `vams`(
`country` string,
`count` int)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'dbfs:/FileStore/'
TBLPROPERTIES (
'totalSize'='2335',
'numRows'='240',
'rawDataSize'='2095',
'COLUMN_STATS_ACCURATE'='true',
'numFiles'='1',
'transient_lastDdlTime'='1418173653')