hive遍歷_從Hive中的stored as file_foramt看hive調優

一、行式數據庫和列式數據庫的對比

1、存儲比較

行式數據庫存儲在hdfs上式按行進行存儲的,一個block存儲一或多行數據。而列式數據庫在hdfs上則是按照列進行存儲,一個block可能有一列或多列數據。

2、壓縮比較

對于行式數據庫,必然按行壓縮,當一行中有多個字段,各個字段對應的數據類型可能不一致,壓縮性能壓縮比就比較差。

對于列式數據庫,必然按列壓縮,每一列對應的是相同數據類型的數據,故列式數據庫的壓縮性能要強于行式數據庫。

3、查詢比較

假設執行的查詢操作是:select id,name from table_emp;

對于行式數據庫,它要遍歷一整張表將每一行中的id,name字段拼接再展現出來,這樣需要查詢的數據量就比較大,效率低。

對于列式數據庫,它只需找到對應的id,name字段的列展現出來即可,需要查詢的數據量小,效率高。

假設執行的查詢操作是:select * from table_emp;

對于這種查詢整個表全部信息的操作,由于列式數據庫需要將分散的行進行重新組合,行式數據庫效率就高于列式數據庫。

但是,在大數據領域,進行全表查詢的場景少之又少,進而我們使用較多的還是列式數據庫及列式儲存。

二、stored as file_format 詳解

1、建一張表時,可以使用“stored as file_format”來指定該表數據的存儲格式,hive中,表的默認存儲格式為TextFile。

30b57c7523e6007da6b30f133c10ba2d.png

2、TEXTFILE、SEQUENCEFILE、RCFILE、ORC等四種儲存格式及它們對于hive在存儲數據和查詢數據時性能的優劣比較

6bf48b794688b1ed4932d57b133c5c58.png

TEXTFILE: 只是hive中表數據默認的存儲格式,它將所有類型的數據都存儲為String類型,不便于數據的解析,但它卻比較通用。不具備隨機讀寫的能力。支持壓縮。

SEQUENCEFILE: 這種儲存格式比TEXTFILE格式多了頭部、標識、信息長度等信息,這些信息使得其具備隨機讀寫的能力。支持壓縮,但壓縮的是value。(存儲相同的數據,SEQUENCEFILE比TEXTFILE略大)

RCFILE(Record Columnar File): 現在水平上劃分為很多個Row Group,每個Row Group默認大小4MB,Row Group內部再按列存儲信息。由facebook開源,比標準行式存儲節約10%的空間。

ORC: 優化過后的RCFile,現在水平上劃分為多個Stripes,再在Stripe中按列存儲。每個Stripe由一個Index Data、一個Row Data、一個Stripe Footer組成。每個Stripes的大小為250MB,每個Index Data記錄的是整型數據最大值最小值、字符串數據前后綴信息,每個列的位置等等諸如此類的信息。這就使得查詢十分得高效,默認每一萬行數據建立一個Index Data。ORC存儲大小為TEXTFILE的40%左右,使用壓縮則可以進一步將這個數字降到10%~20%。

ORC這種文件格式可以作用于表或者表的分區,可以通過以下幾種方式進行指定:

a8384fd5d39bf5593ca4c9d557dea3c5.png
b6a949d2b2b5817996d5e5d415f38fa3.png

示例:創建帶壓縮的ORC存儲表

efccb1ee43276da4ae8eaf2160cd5ed6.png

PARQUET: 存儲大小為TEXTFILE的60%~70%,壓縮后在20%~30%之間。


注意:

  1. 不同的存儲格式不僅表現在存儲空間上的不同,對于數據的查詢,效率也不一樣。因為對于不同的存儲格式,執行相同的查詢操作,他們訪問的數據量大小是不一樣的。
  2. 如果要使用TEXTFILE作為hive表數據的存儲格式,則必須先存在一張相同數據的存儲格式為TEXTFILE的表table_t0,然后在建表時使用"insert into table table_stored_file_ORC select from table_t0;"創建。或者使用"create table as select from table_t0;"創建。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457794.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457794.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457794.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle sql語句 從指定條數查詢

現有表A 查詢從第10行之后的數據 select a from ( select a, rownum r from A ) where r > 10 order by r; 實際工作中例子 select account,acct_name from ( select account, acct_name, rownum r from pmctl_nonsleep_acct ) where r > 10 order by

幫助孩子學會感恩_頁數204_出版日期2015.03_完整版PDF電子書下載

幫助孩子學會感恩_頁數204_出版日期2015.03_完整版PDF電子書下載 帶索引書簽目錄高清版_13813212 下載鏈接http://pan.baidu.com/s/1geEmUeZ 【作 者】(英)蒂姆惠特尼(TimWhitney)著【叢書名】陪孩子成長系列叢書【形態項】 204 …

xwpftablecell設置字體樣式_HTML的文字樣式

font 屬性可以用來作為 font-style, font-variant, font-weight, font-size, line-height 和 font-family 屬性的簡寫,或將元素的字體設置為系統字體。字體修改font-family 屬性:設置HTML頁面中的字體font-size 屬性:設置字體大小font-weight…

將中文標點符號替換成英文標點符號

/// 轉全角的函數(SBC case) /// ///任意字符串 /// 全角字符串 /// ///全角空格為12288,半角空格為32 ///其他字符半角(33-126)與全角(65281-65374)的對應關系是:均相差65248 ///public string ToSBC(string input) { //半角轉全角:char[] cinput.ToCh…

Centos6.5升級GCC

由于CentOS自帶的gcc實在是老掉牙了,所以決定升級一下gcc,下面介紹如何進行源碼編譯,升級gcc。 從GNU網站下載你想要的gcc版本,鏈接:ftp://ftp.gnu.org/gnu/gcc/,選擇合適的gcc版本,然后下載&am…

oracle sql語句 exists

exists 這個關鍵字只是個查詢條件 用來判斷后面跟的查詢語句是否查找到記錄 查找到為真 反之為假 例子 select * from ammst_corp a where account 999999999999999999 and exists ( select 1 from pmrgt_unit where unit_code a.open_unit ) 查找 9999999999999999…

python金字塔_高斯金字塔與拉普拉斯金字塔的原理與python構建

高斯金字塔和拉普拉斯金字塔【1】在圖像相關領域應用廣泛,尤其是圖像融合和圖像分割方面。本文從理論和opencv實現兩個方面對兩種金字塔進行了介紹,并給出了二者的視覺效果。1、高斯金字塔在計算機視覺與圖像處理相關任務中,經常需要使用同一…

mongodb在32位機的連接

Windows 32bit版本安裝Mongodb時,會發生的下面問題 2016-05-09T00:09:45.1240800 I STORAGE [initandlisten] exception in initAndListen: 28663 Cannot start server. The default storage engine wiredTiger is not available with this build of mongod. Pleas…

oracle sql 語句 start with ...... connect by prior .......

這個查詢條件可以理解為遞歸查詢 select up_unit_code from pmctl_nuit START WITH unit_code 1188899Q CONNECT BY PRIOR up_unit_code unit_code 語句理解: 首先根據條件 START WITH unit_code 查詢到 up_unit_code 顯示 然后 CONNECT BY P…

cnetos7安裝zabbix3.0.3安裝手冊

親測可用呀。學習好幾天 最好用的文檔詳見附件http://down.51cto.com/data/2251232轉載于:https://blog.51cto.com/11802086/1863554

python文件夾目錄_Python 操作文件、文件夾、目錄大全

#-*- coding: utf-8 -*-importosimportshutil#一. 路徑操作:判斷、獲取和刪除#1. 得到當前工作目錄,即當前Python腳本工作的目錄路徑: os.getcwd()#print: currentpath: f:\LearnPythoncurrentpath os.getcwd()print "currentpath:",currentpa…

LightOJ 1370 Bi-shoe and Phi-shoe(歐拉函數)

題意:題目給出一個歐拉函數值F(X),讓我們求>這個函數值的最小數N,使得F(N) > F(X); 分析:這個題目有兩種做法。第一種,暴力打出歐拉函數表,然后將它調整…

15-CSS基礎-浮動流

浮動 網頁的布局方式 什么是網頁的布局方式? 網頁的布局方式其實就是指瀏覽器是如何對網頁中的元素進行排版的 標準流(文檔流/普通流)排版方式 其實瀏覽器默認的排版方式就是標準流的排版方式在CSS中將元素分為三類, 分別是塊級元素/行內元素/行內塊級元素在標準流中有兩種排版…

oracle sql 排序

當有多個排序列時 并且每列都是降序排序 需要在每個列名后 寫desc

遷移DirectX11到VS2015 Win10

書本中的例子遷移:Introduction to 3D Game Programming with Direct3D 11.0 顏色:DirectXColors.h and the DirectX::Colors namespace. 效果:Effect framework編譯后只需兩個文件,d3dx11effect.h及生成的lib文件。 紋理&#xf…

python監控網頁更新_python監控網頁更新

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技術人對外發布原創技術內容的最大平臺&…

git-- 使用

git 使用時兩個人沖突: Resolve conflicts

ansible 配置文件

配置文件 兩個核心文件:ansible.cfg和hosts文件,默認都存放在/etc/ansible目錄下。 ansible.cfg:主要設置一些ansible初始化的信息,比如日志存放路徑、模塊、插件等配置信息 hosts:機器清單,進行分組管理 1.ansible.cf…

高內聚低耦合通俗理解_抱歉,請不要把“業務邏輯層”理解為“業務中臺”

在IAS2019中臺架構峰會上,我曾與一位年輕帥氣的技術小伙來了一番有趣的對話。因為和朋友有約,所以我在現場互動結束之后,就急匆匆地跟其他嘉賓打了聲招呼,抱著筆記本沖出了會場。但沒想到剛到電梯口,卻被一位帥小伙迎面…

ofstream的使用方法--超級精細。C++文件寫入、讀出函數(轉)

ofstream的使用方法ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間; 在C中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的文件I/O,stream這個類…