中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop SequenceFile BLOCK壓縮類型文件數據丟失怎么辦

發布時間:2021-12-10 09:23:10 來源:億速云 閱讀:134 作者:iii 欄目:云計算

本篇內容介紹了“Hadoop SequenceFile BLOCK壓縮類型文件數據丟失怎么辦”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

先來了解SequenceFile BLOCK壓縮類型的數據寫入機制:

BLOCK壓縮類型的SequenceFile數據結構圖

Hadoop SequenceFile BLOCK壓縮類型文件數據丟失怎么辦

BLOCK壓縮類型的SequenceFile.Writer實現類為SequenceFile.BlockCompressWriter,寫入流程如下:

    1.寫入頭部信息:版本信息,壓縮類型信息,壓縮算法類信息,keyClass/valueClass類名,Metadata等;

    2.寫入Sync標記;

    3.將key和value序列化并寫入緩存,當緩存大小達到閾值(默認io.seqfile.compress.blocksize=1000000字節),觸發sync()操作,sync操作:先寫入sync標記,再將緩存中的key和value進行壓縮寫入FSDataOutputStream,格式如上圖中的Block compression。 這樣就成功寫入了一個block;

    4. 后續的數據寫入流程和3一樣;

    5. 當最后數據寫入完成后,會存在最后一個block的數據小于io.seqfile.compress.blocksize,這樣不會觸發sync()操作,所以必須調用BlockCompressWriter的close()方法,其中會去調用sync()操作將最后剩余的數據寫入FSDataOutputStream,并對FSDataOutputStream做close(),至此完成整個寫入流程。

?解決我的問題:?

    我的問題是由于在寫入數據結束后只對FSDataOutputStream做了close()操作,而根據BLOCK壓縮類型的寫入必須調用Writer的close()操作,才能觸發sync()操作將剩余數據壓縮寫入FSDataOutputStream。而在我的實現中,當設置io.seqfile.compression.type為NONE和RECORD,不會出現數據丟失。 因為這兩種壓縮類型,是來一條數據就寫入outputStream,沒有BLOCK這樣的緩存后再寫入機制。

“Hadoop SequenceFile BLOCK壓縮類型文件數據丟失怎么辦”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁城县| 宁化县| 汉源县| 汪清县| 渑池县| 金寨县| 上饶县| 隆尧县| 旬邑县| 平和县| 油尖旺区| 都江堰市| 湖口县| 高雄县| 招远市| 广东省| 开阳县| 黔南| 普兰店市| 青川县| 三都| 壶关县| 赣州市| 曲阜市| 涿州市| 延吉市| 湘阴县| 资兴市| 邹平县| 宝应县| 秦皇岛市| 葫芦岛市| 康保县| 武定县| 南充市| 林口县| 巴林左旗| 马龙县| 东丰县| 册亨县| 双鸭山市|