<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 文件存儲格式 hive支持的存儲數的格式主要有: TEXTFILE, SEQUENCEFILE, ORC, PARQUET # 列式存儲和行式存儲 ![](https://box.kancloud.cn/8e88f7c92fe71036a6ebab74b6286eef_671x239.png) 上圖左邊為邏輯表,右邊第一個為行式存儲,第二個為列式存儲 **行存儲的特點**: 查詢滿足條件的一整行數據的時候,列存儲則需要去每個聚集的字段找到對應的每個列的值,行存儲只需要找到其中一個值,其余的值都在相鄰地方,所以此時行存儲查詢的速度更快 **列存儲的特點:**因為每個字段的數據聚集存儲,在查詢只需要少數幾個字段的時候,能大大減少讀取的數據量.每個字段的數據類型一定是相同的,列式存儲可以針對性設計更好的設計壓縮算法 **TEXTFILE和SEQUENCEFILE的存儲格式都是基于行存儲的** **ORC和PAROUET是基于列存儲的** # TextFile格式 默認格式,數據不做壓縮,磁盤開銷最大.可結合Gzip,Bzip2使用.當使用Gzip這種方式,hive不會對數據進行切分,從而無法對數據進行并行操作 # Orc格式 Orc是hive 0.11版本里引入的新的存儲格式 可以看到每個Orc文件由1個或多個stripe組成,每個stripe 250MB大小,這個stripe實際相當于RowGroup概念,不過大小由4MB->250MB,這樣應該能提升順序讀的吞吐率. 每個Stripe里有三部分,分別是Index Data,Row Data,Stripe Footer: ![](https://box.kancloud.cn/b80270240b2773266713c03d33b57c7c_467x642.png) 先按行切換,每個行250MB大小.內部數據是按照列存儲的. 每個塊中有索引和行數據,塊中的是按列存儲的 1. Index Data: 一個輕量級的index,默認是每隔1W行做一個索引.這里做的索引應該只是記錄某行的各字段在Row Data中的offset 2. Row Data:存的是具體的數據,先取部分行,然后對這些行按列進行存儲.對每個列進行了編碼,分成多個stream來存儲 3. Stripe Footer: 存的是各個Stream的類型,長度等信息 # Parquet格式 Parquet是面向分析型業務的列式存儲格式 Parquet文件是以二進制方式存儲的,所以是不可以直接讀取的,文件中包括該文件的數據和元數據,因此**Parquet格式文件是自解析的** 通常情況下,在存儲Parquet數據的時候會按照Block大小設置行組的大小,由于一般情況下每一個Mapper任務處理數據的最小單位是一個Block,這樣可以把**每一行組由一個Mapper任務處理,增大任務執行并行度**.Parquet文件的格式如下: ![](https://box.kancloud.cn/94273df1c57175ed8a9c76da07d3b418_701x534.png) 先按行分割,再按列壓縮 上圖展示了一個Parquet文件的內容,一個文件中可以存儲多個行組,文件的首位都是該文件的Magic Code.用于校驗它是否是一個Parquet文件,Footer length記錄了文件元數據的大小,通過該值和文件長度可以計算出元數據的偏移量,文件的元數據中包括每一個行組的元數據信息和該文件存儲數據的Schema信息. 除了文件中每一個行組的元數據,每一頁的開始都會存儲該頁的元數據,在Parquet中,有三種類型的頁:數據頁,字典頁和索引頁.數據頁用于存儲當前行組中該列的值,字典頁存儲該列值的編碼字典,每一個列塊中最多包含一個字典頁,索引頁用來存儲當前行組下該列的索引,目前Parquet中還不支持索引頁 # 主流文件存儲格式對比 ~~~ create table log( url string, ip string ) row format delimited fields terminated by '\t' stored as parquet; ~~~ stored as 這邊可以寫存儲格式 然后load載入數據 然后查看表中數據大小 ~~~ hive> dfs -du -h /user/hive/warehouse/log; ~~~ 存儲文件壓縮比總結: ORC > Parquet > textFile 存儲文件查詢時間總結:查詢速度相近
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看