準(zhǔn)備從今天開始寫技術(shù)博客~
在平時(shí)的工作中有碰到做SOA開發(fā)的同事要求給到的結(jié)果表格式為textfile枚驻。前些時(shí)間公司里是不允許正式表設(shè)為textfile格式的编曼。原因主要是因?yàn)閠extfile不對(duì)文件做任何處理,占機(jī)器存儲(chǔ)空間,建議的是orc格式,因?yàn)閛rc格式對(duì)文件做了壓縮,存儲(chǔ)更加節(jié)省空間罕邀。今天特地問了一下SOA的同事WHY。
總結(jié)一下养距,主要原因是:
- 如果用orc格式的表存儲(chǔ)诉探,開發(fā)做測(cè)試的時(shí)候不方便測(cè)orc,而測(cè)試和生產(chǎn)又要保持一致棍厌,所以只能生產(chǎn)遷就測(cè)試肾胯,全部換成textfile。
測(cè)試環(huán)境為什么不能測(cè)orc耘纱??jī)蓚€(gè)原因:
- 一般公司的測(cè)試環(huán)境比生產(chǎn)環(huán)境“惡劣”(機(jī)器不好敬肚,沒有專人運(yùn)營,甚至可能軟件都很久沒有升級(jí)過束析,有種測(cè)試拖累了生產(chǎn)的感覺)艳馒。所以測(cè)試環(huán)境里沒有類似生產(chǎn)上完備的hsfs平臺(tái),無法模擬生產(chǎn)通過hdfs讀取orc的過程
- 直接讀取orc會(huì)有亂碼的風(fēng)險(xiǎn),因?yàn)閛rc是壓縮格式弄慰。(textfile就不會(huì)有這個(gè)風(fēng)險(xiǎn))
為什么一定要存成textfile第美?實(shí)在不行開發(fā)可以先select
出來,然后離線把數(shù)據(jù)導(dǎo)到測(cè)試中呀陆爽。原因在于:
- select出來的數(shù)據(jù)分割符和原本orc表里的分隔符顯示會(huì)有差異什往,還需要人工重新編碼,多了一道人工操作慌闭,多了一道風(fēng)險(xiǎn)
所以最好的是恶守,交付表的格式設(shè)為textfile。其實(shí)感覺下來贡必,應(yīng)該是要定期對(duì)測(cè)試環(huán)境做維護(hù)的,否則生產(chǎn)做的再好庸毫,測(cè)試很low仔拟,被測(cè)試短板限制了。
另附飒赃,orc表和textfile表的建表樣例:
orc格式
USE Tmp_UbtDb;
CREATE TABLE normaltabledemo(
field1 STRING COMMENT 'field1 comment',
field2 STRING COMMENT 'field2 comment')
COMMENT 'table comment'
PARTITIONED BY(dt STRING COMMENT 'date')
STORED AS ORC;
textfile格式
USE Tmp_UbtDb;
CREATE TABLE normaltabledemo(
field1 STRING COMMENT 'field1 comment',
field2 STRING COMMENT 'field2 comment')
COMMENT 'table comment'
PARTITIONED BY(dt STRING COMMENT 'date')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE ;