日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

hive遍历_从Hive中的stored as file_foramt看hive调优

發(fā)布時間:2023/12/20 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive遍历_从Hive中的stored as file_foramt看hive调优 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、行式數(shù)據(jù)庫和列式數(shù)據(jù)庫的對比

1、存儲比較

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

2、壓縮比較

對于行式數(shù)據(jù)庫,必然按行壓縮,當(dāng)一行中有多個字段,各個字段對應(yīng)的數(shù)據(jù)類型可能不一致,壓縮性能壓縮比就比較差。

對于列式數(shù)據(jù)庫,必然按列壓縮,每一列對應(yīng)的是相同數(shù)據(jù)類型的數(shù)據(jù),故列式數(shù)據(jù)庫的壓縮性能要強(qiáng)于行式數(shù)據(jù)庫。

3、查詢比較

假設(shè)執(zhí)行的查詢操作是:select id,name from table_emp;

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

對于列式數(shù)據(jù)庫,它只需找到對應(yīng)的id,name字段的列展現(xiàn)出來即可,需要查詢的數(shù)據(jù)量小,效率高。

假設(shè)執(zhí)行的查詢操作是:select * from table_emp;

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

但是,在大數(shù)據(jù)領(lǐng)域,進(jìn)行全表查詢的場景少之又少,進(jìn)而我們使用較多的還是列式數(shù)據(jù)庫及列式儲存。

二、stored as file_format 詳解

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

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

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

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

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

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

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

示例:創(chuàng)建帶壓縮的ORC存儲表

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


注意:

  • 不同的存儲格式不僅表現(xiàn)在存儲空間上的不同,對于數(shù)據(jù)的查詢,效率也不一樣。因為對于不同的存儲格式,執(zhí)行相同的查詢操作,他們訪問的數(shù)據(jù)量大小是不一樣的。
  • 如果要使用TEXTFILE作為hive表數(shù)據(jù)的存儲格式,則必須先存在一張相同數(shù)據(jù)的存儲格式為TEXTFILE的表table_t0,然后在建表時使用"insert into table table_stored_file_ORC select from table_t0;"創(chuàng)建。或者使用"create table as select from table_t0;"創(chuàng)建。
  • 總結(jié)

    以上是生活随笔為你收集整理的hive遍历_从Hive中的stored as file_foramt看hive调优的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。