日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

1、存儲(chǔ)比較

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

2、壓縮比較

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

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

3、查詢比較

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

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

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

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

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

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

二、stored as file_format 詳解

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

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

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

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

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

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

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

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

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


注意:

  • 不同的存儲(chǔ)格式不僅表現(xiàn)在存儲(chǔ)空間上的不同,對(duì)于數(shù)據(jù)的查詢,效率也不一樣。因?yàn)閷?duì)于不同的存儲(chǔ)格式,執(zhí)行相同的查詢操作,他們?cè)L問(wèn)的數(shù)據(jù)量大小是不一樣的。
  • 如果要使用TEXTFILE作為hive表數(shù)據(jù)的存儲(chǔ)格式,則必須先存在一張相同數(shù)據(jù)的存儲(chǔ)格式為TEXTFILE的表table_t0,然后在建表時(shí)使用"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调优的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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