1. 程式人生 > >Impala表使用Parquet檔案格式 2017年05月23日

Impala表使用Parquet檔案格式 2017年05月23日

準備了一個 427144792 行的 textfile 格式表 t_item

[impale-host:21000] > select count(1) from t_item;
Query: select count(1) from t_item  
+-----------+
| count(1)  |
+-----------+
| 427144792 |
+-----------+
Fetched 1 row(s) in 191.67s  

該表在 hdfs 儲存的大小:

$ sudo -u hdfs hadoop fs -du -s -h /user/hive/warehouse/t_item
44.5
G 133.6 G /user/hive/warehouse/t_item

現在我們使用預設的 snappy 壓縮方式建立一個 parquet_snappy_t_item 表:

[impale-host:21000] > create table parquet_snappy_t_item like t_item stored as parquet;
Query: create table parquet_snappy_t_item like t_item stored as parquet

Fetched 0 row(s) in 0.36s  
[impala-host:21000] > set
COMPRESSION_CODEC=snappy; COMPRESSION_CODEC set to snappy [impala-host:21000] > insert into parquet_snappy_t_item select * from t_item; Query: insert into parquet_snappy_t_item select * from t_item Inserted 427144792 row(s) in 421.85s

先看下資料的壓縮情況:

$ sudo -u hdfs hadoop fs -du -s -h /user/hive/warehouse/parquet_snappy_t_item
7.3
G 14.5 G /user/hive/warehouse/parquet_snappy_t_item

已經壓縮到了原先的 1/6 左右,符合我們對 snappy 壓縮演算法的預期。

那麼對資料查詢有沒有什麼影響:

先跑下 count 看看:

[impala-host:21000] > select count(1) from parquet_snappy_t_item;
Query: select count(1) from parquet_snappy_t_item  
+-----------+
| count(1)  |
+-----------+
| 427144792 |
+-----------+
Fetched 1 row(s) in 2.60s  

2.60s vs 191.67s 好驚人的優化。

不過經同事提醒,可能是 Parquet 將行數預先儲存在元資料裡面了。

那再跑一下 group by :

[impala-host:21000] > select count(item_id), item_id from parquet_snappy_t_item group by 2 order by 1 desc limit 10;
... 省略輸出 ...
Fetched 10 row(s) in 11.62s  

而相對於原先 textfile 格式的表:

[impala-host:21000] > select count(item_id), item_id from t_item group by 2 order by 1 desc limit 10;
... 省略輸出 ...
Fetched 10 row(s) in 189.42s  

11.62s vs 189.42s 優勢依然明顯。

再來比較下 gz 和 snappy 壓縮:

gz 的優勢在於進一步將資料壓縮到了 1/10,但是用時也多了一倍,但是在查詢中的 CPU 和記憶體比較 snappy,相差並不大。

以上。

既壓縮了資料還能優化了查詢速度,這麼逆天的黑科技,還不趕緊用起來?

轉載:https://zhengheng.me/2017/05/23/impala-parquet/

相關推薦

Impala使用Parquet檔案格式 20170523

準備了一個 427144792 行的 textfile 格式表 t_item:[impale-host:21000] > select count(1) from t_item; Query: select count(1) from t_item +-------

20170513勒索軟體, 勒索病毒(WannaCry)肆虐全球, 中國安全防線嚴重受挫

[簡介] 常用網名: 豬頭三 出生日期: 1981.XX.XX 個人網站: https://www.x86asm.org QQ交流: 643439947 程式設計生涯: 2001年~至今[共16年] 職業生涯: 14年 開發語言: C/C++、80x86ASM、PHP、Perl、Objective-C、Obj

MiniProfiler使用點滴記錄-201762311:08:23

性能 連接 控制器名 ef6 rem conf mon key mes 1.看似針對同樣一段查詢表ef達式,重復執行卻沒有被記錄下來。其實這是正常情況,因為ef並沒有重復去執行 相同sql查詢。 2.MiniProfiler結合MVC過濾器進行 攔截記錄Sql,示例代

2017102323:58:04

pan -s 找到 開始 反向 有一個 不知道 樹形dp 2017年 占坑…… 深夜填坑ing……今天荒廢了一節升旗的時間(畢竟laj是那麽愛國辣:-> 早上擼了兩題,一個樹形dp,存雙邊的時候最好tot從2開始,因為這樣可以通過i^1找到這條邊的反向邊,還有一個辣雞

Saving James Bond - Easy Version 原創 20171123 13:07:33

oid nta roc bottom ++ lan was html 技術分享 06-圖2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the m

2017623

    昨天一家公司給我發郵件去面試,沒去.今天打電話問是否可以轉到今天,畢竟真簡歷有面試極其難得,去的時候發現公司只有三個人,看他們公司介紹上寫了,app,物聯網,it服務.這麼多業務發現只有三個人.其實這家公司只是做智慧手錶,app也是手錶的應用.三個人,一個人負責io

老男孩教育每日一題-201759-vim命令粘貼帶#號或註釋信息格式會出現混亂情況怎麽辦

vim/vi粘貼 每日一題 格式混亂 1.題目老男孩教育每日一題-2017年5月9日-vim編輯器使用知識點:vim命令粘貼帶#號或註釋信息格式會出現混亂情況,有什麽方法進行解決?問題說明:每次復制代碼時,如果代碼裏有 //或# 這樣的註釋就容易讓格式亂掉,顯示的內容不整齊,並不是所期望的顯示格式

20171024 第三章

selected button 單選框 選中 max eth 密碼框 網址 輸入文本 1.語法   <form method="get/post" action="數據向哪提交的地址"     //表單內容   </form> 2.input 標簽常用屬性

2017114 vs類和結構的區別&哈希&隊列集合&棧集合&函數

b- protect htable private turn queue ole 長度 ack 類和結構的區別 類:類是引用類型在堆上分配,類的實例進行賦值只是復制了引用,都指向同一段實際對象分配的內存類有構造和析構函數類可以繼承和被繼承結構:結構是值類型在棧上分配(雖然

2017 05

銘毅天下 【死磕Elasticsearch知識星球】http://t.cn/RmwM3N9;【Elasticsearch微信公眾號】銘毅天下;【死磕ElasticsearchQQ群】626036393...

老男孩教育每日一題-201757-加餐-linux下面如何實現,執行rm命令,就顯示do not use rm command

linux別名 每日一題 1.題目-老男孩教育每日一題-2017年5月7日-加餐-linux下面如何實現,執行rm命令,就顯示do not use rm command2.要求結果[[email protected]/* */ ~]# rm do not use rm command3.答

老男孩教育每日一題-2017512-磁盤知識點:linux系統中LVM配置實現方法?

邏輯卷管理 磁盤 每日一題 1.題目老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?2.參考答案01:將一個或多個物理分區創建為一個PV# pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" success

老男孩教育每日一題-2017518-說說|(管道)與|xargs(管道xargs)的區別

管道 每日一題 管道xargs 1.題目老男孩教育每日一題-2017年5月18日-說說|(管道)與|xargs(管道xargs)的區別2.參考答案find |xargs ls -ld##把前一個命令的結果,通過管道傳遞給後面的命令(ls -ld),傳遞的是文件名find | 命令 ##把

老男孩教育每日一題-2017519-使用find命令的時候 |xargs(管道xargs)與-exe有什麽區別?

打包壓縮 xargs g管道 exec 每日一題 1.題目老男孩教育每日一題-2017年5月19日-使用find命令的時候 |xargs(管道xargs)與-exe有什麽區別?2.參考答案一般來說這兩個參數或命令是一樣的。可是在一些情況下尤其是打包壓縮的時候差別就很大了。find /old

2016傳智SSH框架CRM項目(5天)筆記(201752022:09:36)

images 項目 是把 ima 技術分享 易錯點 font log ont 5天視頻,摘取了其中的一些筆記。筆記記得有點簡略,但是把項目中的易錯點都寫出來了。 筆記鏈接如下 鏈接:http://pan.baidu.com/s/1geQ9Tn1 密碼:1eh82016傳智

老男孩教育每日一題-2017522-命令風暴:變量a=’a/b/c’如何截取得到c

linux三劍客 每日一題 取字符串 1.題目老男孩教育每日一題-2017年5月22日-命令風暴:變量a=’a/b/c’如何截取得到c2.參考答案系統環境[[email protected]/* */ ~]# uname -r2.6.32-504.el6.x86_64 [[email&

2017526 20:56:11

-c script 描述 spa key name inpu cnblogs 人的   自己寫api文檔。   不要自負的認為自己不需要文檔,你不需要別人需要啊。看了一個月的別人的接口文檔,今天學著自己動手寫api文檔。   api文檔最重要的包括:   接口名 言簡意賅

老男孩教育每日一題-2017524-腦洞神探之tmp目錄的下的備份文件突然沒了,誰來背鍋?

tmp目錄 每日一題 1.題目老男孩教育每日一題-2017年5月24日-腦洞神探之tmp目錄的下的備份文件突然沒了,誰來背鍋?2.參考答案1.運維幹的2.開發幹的3.系統幹的,系統安裝了一個命令tmpwatch,定期刪除文件。在Centos/RHEL/Fedora系統下存在清理機制(Ubuntu下沒有

2017526課堂筆記

() 空氣 關鍵字 mas html bsp strong 出錯 bst 2017年5月26日 星期五 晴 空氣質量:中度汙染 內容:JavaScript:初識js,按鈕的點擊事件,變量的使用,數據類型,typeof的使用, string的使用,數組的使用,運算符的運用,邏

154173526顏靈營 現代軟件工程工作室半月(2017220~2017531)學習情況總結

學習內容總結 用法 情況 能力 軟件工程 以及 .com 工作室 工程 學習內容總結: 深入學習了java,提高了一些解決問題的能力。 學到了github的用法。 應對問題的解決思路。 問題1:利用git上傳不了 問題1解決方案:通過百度,以及教程成功上傳 問題2:隨機生