수색…
SEQUENCEFILE
데이터를 압축해야하는 경우 데이터를 SEQUENCEFILE에 저장하십시오. Gzip 또는 Bzip2로 압축 된 텍스트 파일을 TextFile로 저장된 테이블로 직접 가져올 수 있습니다. 압축은 자동으로 감지되며 파일은 쿼리 실행 중에 즉석에서 압축이 풀립니다.
CREATE TABLE raw_sequence (line STRING)
STORED AS SEQUENCEFILE;
ORC
ORC (Optimized Row Columnar) 파일 형식은 Hive 데이터를 매우 효율적으로 저장하는 방법을 제공합니다. 다른 하이브 파일 형식의 한계를 극복하기 위해 설계되었습니다. ORC 파일을 사용하면 하이브가 데이터를 읽고 쓰고 처리 할 때 성능이 향상됩니다. ORC 파일에는 간단한 색인과 블룸 필터가 포함될 수 있습니다.
참조 : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
ORC는 HortonWorks 배포판에 데이터를 저장하는 데 권장되는 형식입니다.
CREATE TABLE tab_orc (col1 STRING,
col2 STRING,
col3 STRING)
STORED AS ORC
TBLPROPERTIES (
"orc.compress"="SNAPPY",
"orc.bloom.filter.columns"="col1",
"orc.create.index" = "true"
)
테이블의 새 파티션이 ORC 파일로 저장되도록 테이블을 수정하려면 :
ALTER TABLE T SET FILEFORMAT ORC;
Hive 0.14부터 사용자는 테이블이나 파티션에서 CONCATENATE
명령을 실행하여 작은 ORC 파일을 효율적으로 병합하도록 요청할 수 있습니다. 파일은 재 분류없이 스트라이프 레벨에서 병합됩니다.
ALTER TABLE T [PARTITION partition_spec] CONCATENATE;
쪽매 세공
Hive 0.13.0 이상에서 나무 마루 기둥 형태의 저장 형식. 파켓은 처음부터 복잡한 중첩 데이터 구조를 염두에두고 작성되었으며 Dremel 논문에 설명 된 레코드 파쇄 및 조립 알고리즘을 사용합니다. 이 방법은 중첩 된 이름 공간을 단순하게 병합하는 것보다 월등합니다.
마루 (parquet)는 매우 효율적인 압축 및 인코딩 체계를 지원합니다. 여러 프로젝트가 올바른 압축 및 인코딩 체계를 데이터에 적용하여 성능에 미치는 영향을 입증했습니다. 마루 (parquet)를 사용하면 압축 스키마를 열 단위 수준에서 지정할 수 있으며, 향후에 발명되고 구현 될 때 더 많은 인코딩을 추가 할 수 있습니다.
쪽모이도는 Cloudera 분포의 임팔라 표가있는 파일 형식을 권장합니다.
참조 : http://parquet.apache.org/documentation/latest/
CREATE TABLE parquet_table_name (x INT, y STRING) STORED AS PARQUET;
AVRO
Avro 파일은 Hive 0.14.0 이상에서 지원되었습니다.
Avro는 Apache의 Hadoop 프로젝트 내에서 개발 된 원격 프로 시저 호출 및 데이터 직렬화 프레임 워크입니다. JSON을 사용하여 데이터 유형 및 프로토콜을 정의하고 압축 된 바이너리 형식으로 데이터를 직렬화합니다. Apache Hadoop의 주요 용도는 영구 데이터의 직렬화 형식과 Hadoop 노드 간의 통신 및 클라이언트 프로그램에서 Hadoop 서비스로의 통신을위한 유선 형식을 제공 할 수있는 것입니다.
AVRO 형식 사양 : https://avro.apache.org/docs/1.7.7/spec.html
CREATE TABLE kst
PARTITIONED BY (ds string)
STORED AS AVRO
TBLPROPERTIES (
'avro.schema.url'='http://schema_provider/kst.avsc');
스키마 파일을 사용하지 않고 아래 구문을 사용할 수도 있습니다.
CREATE TABLE kst (field1 string, field2 int)
PARTITIONED BY (ds string)
STORED AS AVRO;
위의 예에서 STORED AS AVRO
절은 다음과 같습니다.
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
텍스트 파일
TextFile은 구성 매개 변수 hive.default.fileformat의 설정이 다른 경우를 제외하고는 기본 파일 형식입니다. 구분 된 텍스트 파일의 필드 이름을 사용하여 하이브에 대한 테이블을 만들 수 있습니다. 예를 들어, csv 파일에 ID, 이름, 급여라는 세 개의 필드가 있고 "사원"이라는 하이브에 테이블을 만들고 싶습니다. 다음 코드를 사용하여 하이브에 테이블을 만듭니다.
CREATE TABLE employees (id int, name string, salary double) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
이제 테이블에 텍스트 파일을로드 할 수 있습니다.
LOAD DATA LOCAL INPATH '/home/ourcsvfile.csv' OVERWRITE INTO TABLE employees;
데이터가 성공적으로로드되었는지 확인하기 위해 테이블의 내용을 하이브에 표시 :
SELECT * FROM employees;