Hadoop文件存儲的葵花寶典

文件存儲分行存儲和列存儲,每個存儲格式里面又分不同的類型,在實際的應(yīng)用中如何去使用?怎樣去使用?快來圍觀吧!

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了木蘭免費建站歡迎大家使用!

文件存儲格式,我們在什么時候去指定呢?比如在Hve和Ipala中去創(chuàng)建表的時候,我們除了指定列和分隔符,在它的命令行結(jié)尾有STORED AS參數(shù),這個參數(shù)默認(rèn)是文本格式,但是文本不適合所有的場景,那么在這里我們就可以改變文本的信息。

 Hadoop文件存儲的葵花寶典

那么到底我們應(yīng)該選擇哪些格式呢?每種格式都有什么樣的特點呢?我們?yōu)槭裁匆ミx擇這種格式呢?

一、文本文件:

文本文件是Hadoop里面最基本的文件類型,可以從任何編程語言進(jìn)行讀或?qū)?,兼容逗號和tab分隔的文件以及其它很多的應(yīng)用。而且文本文件直接可讀的,因為都是字符串,所以在Debug的時候非常有用。然而,數(shù)據(jù)到達(dá)一定規(guī)模,這種格式是很低效的:(1)文本文件把數(shù)值表示為string浪費了存儲空間;(2)很難表示二進(jìn)制的數(shù)據(jù),比如圖片,通常依靠其他技術(shù),比如Base64編碼

所以文本文件格式總結(jié)起來就是:易操作,但性能低

二、序列文件

序列文件本質(zhì)是基于key-value鍵值對的二進(jìn)制容器格式,它比文本格式冗余更少,更高效,適合存儲二進(jìn)制數(shù)據(jù),比如圖片。而且它是Java專有格式并且跟Hadoop緊密結(jié)合。

所以序列文件格式總結(jié)起來就是:性能好,但難操作

三、Avro數(shù)據(jù)文件

Avro數(shù)據(jù)文件是二進(jìn)制編碼,存儲效率更好。它不僅可以在Hadoop生態(tài)系統(tǒng)得到廣泛支持,還可以在Hadoop之外使用。它是長期存儲重要數(shù)據(jù)的理想選擇,可以通過多種語言讀寫。

而且它內(nèi)嵌schema文件,通過這個文件我們可以很輕松的像表一樣去定義數(shù)據(jù)的模式,可以靈活制定字段及字段類型。Schema演化可以適應(yīng)各種變化,比如當(dāng)前指定一個Schema類型,將來增加了一些數(shù)據(jù)結(jié)構(gòu)、刪除了一些數(shù)據(jù)、類型發(fā)生了變更、長度發(fā)生了變更,都是可以應(yīng)對的。

所以Avro數(shù)據(jù)文件格式總結(jié)起來就是:極好的操作性和性能,是Hadoop通用存儲的最佳選擇。

以上介紹的三種格式都是行存儲,但是Hadoop里面還有一些列存儲格式。典型的OLTP以行的形式來存儲,就是以連續(xù)的行來存儲到連續(xù)的塊,當(dāng)我們進(jìn)行隨機(jī)的尋值訪問的時候,我們通常會去加一些條件,對于行存儲而言可以迅速定義到塊所在位置,然后提取行的數(shù)據(jù)。而列存儲以列為單位進(jìn)行存儲,如果將列存儲應(yīng)用于OLTP我們要定義到特定行進(jìn)行掃描的時候,它會掃描到所有的列。對于列存儲應(yīng)用到在線事務(wù)場景處理就是一個很恐怖的事情,列存儲的意義在于應(yīng)用于大數(shù)據(jù)分析場景,比如進(jìn)行特征值的抽取,變量的篩選,通常在大數(shù)據(jù)場景應(yīng)用中我們會大量的應(yīng)用寬表,可能對于某一業(yè)務(wù)分析而言,我們只需要使用其中一個或幾十個這樣的列,那么就可去選擇一些列進(jìn)行掃描,不會掃描到全表。行存儲與列存儲并沒有絕對的好壞之分,只是彼此適用的場景不一樣。

 Hadoop文件存儲的葵花寶典

下面我們看一下列存儲重要的存儲方式:

一、Parquet文件

Parquet文件格式非常重要,在未來也將會被廣泛的使用。我們把HDFS稱作是大數(shù)據(jù)存儲事實標(biāo)準(zhǔn)的話,那么Parquet文件就是文件存儲格式的事實標(biāo)準(zhǔn)。目前spark已經(jīng)把它作為默認(rèn)的文件存儲格式,可見它的重要性。最初由cloudera和twitter開發(fā)的開源列存儲格式,在MapReduce、Hive、Pig、Impala、Spark、Crunch和其他項目中支持應(yīng)用。它和Avro數(shù)據(jù)文件都有Schema元數(shù)據(jù),區(qū)別只是Parquet文件是列存儲,Avro數(shù)據(jù)文件是行存儲。這里必須要強(qiáng)調(diào)的是Parquet文件在編碼方面進(jìn)行了一些額外優(yōu)化,減少存儲空間,增加了性能。

所以Parquet文件總結(jié)起來就是:極好的操作性和性能,是基于列訪問模式的最佳選擇。

 文件存儲格式,需要重點去把握和學(xué)習(xí),尤其是每種存儲格式優(yōu)劣勢,必須熟練掌握,才可以在使用中更好的去選擇使用。另外,我們在平常的工作中也要多去和別人分享交流,這樣才會更好的完善自己的知識架構(gòu),提升自己的技術(shù)水平,友情推薦“大數(shù)據(jù)cn”微信公眾號,等你來交流!

文章標(biāo)題:Hadoop文件存儲的葵花寶典
當(dāng)前鏈接:http://muchs.cn/article26/ihiijg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)頁設(shè)計公司、App開發(fā)、自適應(yīng)網(wǎng)站、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)