好程式設計師大資料學習路線之hive儲存格式

好程式設計師IT發表於2019-07-30

  好程式設計師大資料學習路線之 hive儲存格式 hive的儲存格式通常是三種:textfile 、 sequencefile 、 rcfile 、 orc 、自定義 set hive.default.fileformat=TextFile; 預設儲存格式為:textfile textFile :普通文字儲存,不進行壓縮。查詢效率較低。

1.sequencefile:

hive提供的二進位制序列檔案儲存,天生壓縮。

sequeceFile 和 rcfile都不允許使用load方式載入資料。需要使用insert 方式插入

預設支付壓縮、分割,使用便捷、寫和查詢較快。 sequencefile和壓縮屬性可以搭配使用。

create table if not exists seq1(
id int,
name string
)
row format delimited fields terminated by '\t'
lines terminated by '\n'
stored as sequencefile
;
### 載入資料錯誤方式
load data local inpath '/home/user' into table seq1;
### 載入資料正確方式
insert into table seq1
select * from user1
;

2.rcfile

 rcfile可以進行行列混合壓縮,將附近的列和行的資料儘量儲存到相同的塊裡面,該儲存格式會提高查詢效率,但是寫資料較慢。該方式和gzcodeC壓縮屬性結合不是很好() set mapred.output.compression=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

### 建立 rcfile 表:
create table if not exists rc1(
id int,
name string
)
row format delimited fields terminated by '\t'
stored as rcfile
;
create table if not exists rc2(
id int,
name string
)
row format delimited fields terminated by '\t'
stored as rcfile
;
### 載入資料錯誤方式
load data local inpath '/home/user' into table rc1;
### 載入資料正確方式
insert into table rc2
select * from user1
;

3. 儲存自定義:

資料: seq yd後設資料檔案: aGVsbG8saGl2ZQ== aGVsbG8sd29ybGQ= aGVsbG8saGFkb29w seq yd檔案為base64編碼後的內容,decode後資料為:

##hello,hive
##hello,world
##hello,hadoop
create table cus(str STRING)  
stored as  
inputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextInputFormat'  
outputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextOutputFormat';  
LOAD DATA LOCAL INPATH '/home/cus' INTO TABLE cus;

通常是使用 defaultCodec + rcfile搭配效率最好


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2652258/,如需轉載,請註明出處,否則將追究法律責任。

相關文章