本篇內(nèi)容介紹了“Hadoop SequenceFile BLOCK壓縮類(lèi)型文件數(shù)據(jù)丟失怎么辦”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
作為一家“創(chuàng)意+整合+營(yíng)銷(xiāo)”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(yè)內(nèi)良好的客戶(hù)口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、創(chuàng)意表現(xiàn)、網(wǎng)頁(yè)制作、系統(tǒng)開(kāi)發(fā)以及后續(xù)網(wǎng)站營(yíng)銷(xiāo)運(yùn)營(yíng)等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營(yíng)模式與有效的網(wǎng)絡(luò)營(yíng)銷(xiāo)方法,創(chuàng)造更大的價(jià)值。
先來(lái)了解SequenceFile BLOCK壓縮類(lèi)型的數(shù)據(jù)寫(xiě)入機(jī)制:
BLOCK壓縮類(lèi)型的SequenceFile數(shù)據(jù)結(jié)構(gòu)圖
BLOCK壓縮類(lèi)型的SequenceFile.Writer實(shí)現(xiàn)類(lèi)為SequenceFile.BlockCompressWriter,寫(xiě)入流程如下:
1.寫(xiě)入頭部信息:版本信息,壓縮類(lèi)型信息,壓縮算法類(lèi)信息,keyClass/valueClass類(lèi)名,Metadata等;
2.寫(xiě)入Sync標(biāo)記;
3.將key和value序列化并寫(xiě)入緩存,當(dāng)緩存大小達(dá)到閾值(默認(rèn)io.seqfile.compress.blocksize=1000000字節(jié)),觸發(fā)sync()操作,sync操作:先寫(xiě)入sync標(biāo)記,再將緩存中的key和value進(jìn)行壓縮寫(xiě)入FSDataOutputStream,格式如上圖中的Block compression。 這樣就成功寫(xiě)入了一個(gè)block;
4. 后續(xù)的數(shù)據(jù)寫(xiě)入流程和3一樣;
5. 當(dāng)最后數(shù)據(jù)寫(xiě)入完成后,會(huì)存在最后一個(gè)block的數(shù)據(jù)小于io.seqfile.compress.blocksize,這樣不會(huì)觸發(fā)sync()操作,所以必須調(diào)用BlockCompressWriter的close()方法,其中會(huì)去調(diào)用sync()操作將最后剩余的數(shù)據(jù)寫(xiě)入FSDataOutputStream,并對(duì)FSDataOutputStream做close(),至此完成整個(gè)寫(xiě)入流程。
?解決我的問(wèn)題:?
我的問(wèn)題是由于在寫(xiě)入數(shù)據(jù)結(jié)束后只對(duì)FSDataOutputStream做了close()操作,而根據(jù)BLOCK壓縮類(lèi)型的寫(xiě)入必須調(diào)用Writer的close()操作,才能觸發(fā)sync()操作將剩余數(shù)據(jù)壓縮寫(xiě)入FSDataOutputStream。而在我的實(shí)現(xiàn)中,當(dāng)設(shè)置io.seqfile.compression.type為NONE和RECORD,不會(huì)出現(xiàn)數(shù)據(jù)丟失。 因?yàn)檫@兩種壓縮類(lèi)型,是來(lái)一條數(shù)據(jù)就寫(xiě)入outputStream,沒(méi)有BLOCK這樣的緩存后再寫(xiě)入機(jī)制。
“Hadoop SequenceFile BLOCK壓縮類(lèi)型文件數(shù)據(jù)丟失怎么辦”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!