1. 程式人生 > >淺談hive中資料的幾種壓縮方式

淺談hive中資料的幾種壓縮方式

hive庫中有個表,表名叫做user_info_base表創表的命令是:
create table user_info_base(
    id string,
    name string,
    age string
)row format delimited fields terminated by '\t' LINES TERMINATED BY '\n'
  stored as textfile;

現對user_info_base表中資料進行壓縮,具體壓縮方式分以下兩種:

1,資料壓縮成TXTfile:
#建立臨時用中間表,表結構和源表相同
create table user_info_base_txtfile like user_info_base;
#hive中開啟壓縮模式
set hive.exec.compress.output=true;  
set mapred.output.compress=true;  
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;    -----注可修改壓縮格式Gzip,可自己百度搜索
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;      
#向臨時表中插入資料
insert into table user_info_base_txtfile select * from user_info_base;
#檢視兩個表大小對比
hadoop fs -dus -h /user/hive/warehouse/user_info_base*
#刪除源表
drop table  user_info_base;
#修改表名
alter table user_info_base_txtfile rename to user_info_base;

2,資料壓縮成rcfile:
#建立臨時用中間表,重新編寫創表語句:
create table user_info_base_rcfile(
id string,
name string,
age string
)row format delimited
fields terminated by '\t' stored as RCFILE
;
#hive中開啟壓縮模式
set hive.exec.compress.output=true;  
set mapred.output.compress=true;  
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;    -----注可修改壓縮格式Gzip,可自己百度搜索
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  
#向臨時表中插入資料
insert into table user_info_base_rcfile select * from user_info_base;
#檢視兩個表大小對比
hadoop fs -dus -h /user/hive/warehouse/user_info_base*
#刪除源表
drop table  user_info_base;
#修改表名
alter table user_info_base_txtfile rename to user_info_base;

經實測,壓縮比例一般能達到80%,即100G的txt檔案能壓縮至20G

兩種壓縮儲存的對比:
txtfile:資料查詢時間慢,資料壓縮較快,入庫快,可資料可直接入庫
rcfile:資料查詢效率快,資料壓縮較慢,資料無法直接入庫,由txtfile載入而來。

注:資料壓縮後的表進行資料查詢會比普通的表消耗較多cpu,但減少各主機IO壓力。
注:還有種壓縮方式為sequencefile,功能和rcfile差不多,但效果沒rcfile好。





相關推薦

hive資料壓縮方式

hive庫中有個表,表名叫做user_info_base表創表的命令是:create table user_info_base(    id string,    name string,    age string)row format delimited fields t

C++建構函式

3月中旬參加宣講會,做了X軟公司的C++筆試題,裡面有一道“預設拷貝建構函式的題”,由於好久沒複習C++基礎知識,當時連基本的概念都想不來了了。於是乎,開始拿起以前看的譚浩強C++複習起來,現在書快要要啃完了,覺得收穫頗多。好比練武功,祕籍雖然重要,但更重要的還

Hyper-V的備份方式(二)----Windows Server Backup &VSS

轉載與jrfly331 的BLOG,http://mrfly.blog.51cto.com/151750/187895 在此係列上一篇<淺談Hyper-V的幾種備份方式(一)----Snapshot虛擬機器快照>中, 我們一起加深了對Hyper-V的快照功能的理

Hyper-V的備份方式

淺談Hyper-V的幾種備份方式(一) ----snapshot虛擬機器快照 淺談Hyper-V的幾種備份方式(一)----snapshot虛擬機器快照 時至今日,相信大家對微軟的伺服器虛擬化技術已經比較瞭解和熟悉了,您要是常逛我們51cto論壇,不難發現罈子的首頁最上

Java的八基本資料型別

1)四種整數型別(byte、short、int、long):    byte:8 位,用於表示最小資料單位,如檔案中資料,-128~127    short:16 位,很少用,-32768 ~ 32767    int:32 位、最常用,-2^31-1~2^31  (21 億

hive

1.hive中表的型別 內部表(受控表):當刪除內部表的時候,hdfs上的資料以及元資料都會被刪除。 外部表:當刪除外部表的時候,HDFS上的資料不會被刪除,但是元資料會被刪除。 臨時表(測試環境):在當前會話期間記憶體在,會話結束自動消失,生命週期隨之ses

字串匹配的演算法(KMP,Boyer-Moore)

自從開始進行演算法學習之後,談到字串匹配就總是KMP演算法,今天在網上查閱相關資料時,偶然發現了Boyer-Moore演算法,思考過後發現了其中的精妙之處,於是就寫下這篇文章來談談自己對幾種演算法的理解。 1.最簡單通俗的模式匹配 首先我們給定

分散式架構的主要開發方式

 面向服務架構soa以其獨特的優勢越來越受到企業的重視,它可以根據需求通過網路對鬆散耦合的粗粒度應用元件進行分散式部署、組合和使用。服務層是SOA的基礎,可以直接被應用呼叫,從而有效控制系統中與軟體代理互動的人為依賴性。Soa的開發方法一般主要有開源的dubbo、dubbox

Zebra斑馬印表機三列印方式的利弊

經過幾個專案的洗禮,對Zebra印表機有了一個初步的瞭解,也用了好幾種方式進行通訊列印,下面我們來談談這幾種方式的優缺點吧。 主要有以下三種方法: 1.利用ZPLII指令集編寫帶有位置資訊,字型大小,列印內容等資訊的指令,利用TCP/IP或者串列埠傳輸到印表機列印 2.利用Graphic

php輸出方式---echo、print、print_r、die、exit、printf、

echo echo可以輸出字串 echo 'aaa'; 輸出結果:aaa 也可以輸出變數 $m=5; echo $m; 輸出結果:5 也可以同時輸出多個字串的值,但是需要用逗號隔開 $m=5; echo 'aaa',$m;

HTML定位方式

1,static(預設) 當你沒有為一個元素(例如div)指定定位方式時,預設為static,也就是按照文件的流式(flow)定位,將元素放到一個合適的地方。所以在不同的解析度下,採用流式定位能很好的自適合,取得相對較好的佈局效果。 一般來說,我們不需要指明當前元素的定位

對於前端開發佈局方式的理解

一,靜態佈局(Static Layout) 在螢幕寬高有調整時,使用橫向和豎向的滾動條來查閱被遮掩部分; 意思就是不管瀏覽器尺寸具體是多少,網頁佈局就按照當時寫程式碼的佈局來佈置 二,彈性佈局(Elastc Layout) 是CSS3引入的佈局方式,其中flex-flow是flex-di

java加密方式

第一種 DES加解密 import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import org

Java Hbase資料查詢方式

/**Name : KcnaufHadoopManagement *Author : Zhang Bing *Created : 2013-7-31 *Function : delete of hbase */ package com.exercise.hbas

【原創】大叔經驗分享(23)hive metastore的部署方式

tps rac driver 所有 ava onf script 1.2 uri hive及其他組件(比如spark、impala等)都會依賴hive metastore,依賴的配置文件位於hive-site.xml hive metastore重要配置 hive.met

hivemetastore三儲存方式

hive中metastore儲存方式:      巢狀方式: 使用內建derby資料庫,同一時間僅限一個hive cli環境登入       本地mysql儲存方式: 採取外部mysql資料庫伺服器,支援多使用者連線模式,通過設定hive.metastore.local 為

Selenium等待方式,需特別注意implicitlyWait的用法

最近在專案過程中使用selenium 判斷元素是否存在的時候 遇到一個很坑爹的問題, 用以下方法執行的時候每次都會等待很長一段時間,原因是因為對selenium實現方法瞭解不足導致一直找不到解決方法。   private boolean isElementPresent(By by) {      tr

UML常用的圖——用例圖

多個 spa log 分享 擴展 有關 包圖 可見 發的 1.UML簡介   統一建模語言(Unified Modeling Language,UML)又稱標準建模語言,是始於1997年的一個OMG標準,它是一個支持模型化和軟件系統開發的圖形化語言,為軟件開發的所有階段提供

最近在研究多線程,JAVA多線程的實現方式

進行 數據 使用 導致 效率問題 多線程 方法 sta img 多線程的實現方式:   個人認為,要說多線程的實現方式,萬變不離其宗,最基本的就是兩種1.繼承Thread類;2.實現runnable接口,本質上來說就是用來啟動線程執行任務的過程,具體來說的話,通過這

java遍歷Map的方法

java中的map遍歷有多種方法,從最早的Iterator,到java5支援的foreach,再到java8 Lambda,讓我們一起來看下具體的用法以及各自的優缺點 先初始化一個map public class TestMap { public static Map<Intege