Hive檔案格式

2021-09-19 13:24:12 字數 2681 閱讀 2917

hive檔案儲存格式包括以下幾類:

1、textfile

2、sequencefile

3、rcfile

4、orcfile(0.11以後出現)

其中textfile為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理;

sequencefile,rcfile,orcfile格式的表不能直接從本地檔案匯入資料,資料要先匯入到textfile格式的表中, 然後再從表中用insert匯入sequencefile,rcfile,orcfile表中。

前提建立環境:

hive 0.8

建立一張testfile_table表,格式為textfile。

create table if not exists testfile_table( site string, url string, pv bigint, label string) row format delimited fields terminated by 『\t』 stored as textfile;

預設格式,資料不做壓縮,磁碟開銷大,資料解析開銷大。

可結合gzip、bzip2使用(系統自動檢查,執行查詢時自動解壓),但使用這種方式,hive不會對資料進行切分,從而無法對資料進行並行操作。

示例:

create table if not exists textfile_table(

site string,

url string,

pv bigint,

label string)

row format delimited

fields terminated by '\t'

stored as textfile;

插入資料操作:

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.gzipcodec;

set io.compression.codecs=org.apache.hadoop.io.compress.gzipcodec;

insert overwrite table textfile_table select * from textfile_table;

sequencefile是hadoop api提供的一種二進位制檔案支援,其具有使用方便、可分割、可壓縮的特點。

sequencefile支援三種壓縮選擇:none,record,block。record壓縮率低,一般建議使用block壓縮。

示例:

create table if not exists seqfile_table(

site string,

url string,

pv bigint,

label string)

row format delimited

fields terminated by '\t'

stored as sequencefile;

插入資料操作:

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.gzipcodec;

set io.compression.codecs=org.apache.hadoop.io.compress.gzipcodec;

set mapred.output.compression.type=block;

insert overwrite table seqfile_table select * from textfile_table;

rcfile是一種行列儲存相結合的儲存方式。首先,其將資料按行分塊,保證同乙個record在乙個塊上,避免讀乙個記錄需要讀取多個block。其次,塊資料列式儲存,有利於資料壓縮和快速的列訪問。

rcfile檔案示例:

create table if not exists rcfile_table(

site string,

url string,

pv bigint,

label string)

row format delimited

fields terminated by '\t'

stored as rcfile;

插入資料操作:

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.gzipcodec;

set io.compression.codecs=org.apache.hadoop.io.compress.gzipcodec;

insert overwrite table rcfile_table select * from textfile_table;

Hive 檔案格式

hive檔案儲存格式包括以下幾類 1 textfile 2 sequencefile 3 rcfile 4 orcfile 0.11以後出現 5 parquet其中textfile為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理 sequencefile,...

Hive檔案格式

hive檔案儲存格式包括以下幾類 1 textfile 2 sequencefile 3 rcfile 4 orcfile 0.11以後出現 其中textfile為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理 sequencefile,rcfile,or...

hive檔案格式

sequencefile sequencefile是hadoop api 提供的一種二進位制檔案,它將資料以的形式序列化到檔案中。這種二進位制檔案內部使用hadoop 的標準的writable 介面實現序列化和反序列化。它與hadoop api中的mapfile 是互相相容的。hive 中的sequ...