国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

hive文件存儲格式orc和parquet詳解

這篇具有很好參考價值的文章主要介紹了hive文件存儲格式orc和parquet詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

hive支持的文件類型:textfile、sequencefile(二進制序列化文件)、rcfile(行列式文件)、parquet、orcfile(優(yōu)化的行列式文件)

一、orc文件

帶有描述式的行列式存儲文件。將數(shù)據(jù)分組切分,一組包含很多行,每一行再按例進行存儲。

orc文件結(jié)合了行式和列式存儲結(jié)構(gòu)的優(yōu)點,在有大數(shù)據(jù)量掃描讀取時,可以按行進行數(shù)據(jù)讀取。如果要讀取某列的數(shù)據(jù),可以在讀取行組的基礎上讀取指定的列,而不需要讀取行組內(nèi)所有數(shù)據(jù)以及一行內(nèi)的所有字段數(shù)據(jù)。

1.1 orc文件的結(jié)構(gòu):

orc和pak,大數(shù)據(jù),hive,數(shù)據(jù)倉庫
orc和pak,大數(shù)據(jù),hive,數(shù)據(jù)倉庫

條帶(stripe)

orc文件存儲數(shù)據(jù)的地方

文本腳注(file footer)

包含了stripe列表,每個stripe包含的行數(shù),以及每個列的數(shù)據(jù)類型。包含每個列的最大值,最小值,行計數(shù),求 和等信息。

postscript

壓縮參數(shù)和壓縮大小相關(guān)的信息

1.2 stripe結(jié)構(gòu)

分為三部分:index data、rows data、stripe footer

index data:保存了所在條帶的一些統(tǒng)計信息,以及數(shù)據(jù)在stripe中的位置索引信息

rows data:存儲數(shù)據(jù)的地方,由多行組成,數(shù)據(jù)以stream(流)的形式存儲

stripe footer:保存數(shù)據(jù)所在的目錄

1.3 rows data數(shù)據(jù)結(jié)構(gòu)

metadata stream :描述每個行組的元數(shù)據(jù)信息

data stream:存儲數(shù)據(jù)的地方

1.4 orc文件中提供了三個級別的索引

文件級別:記錄文件中所有script的位置信息,以及文件中存儲的每列數(shù)據(jù)的統(tǒng)計信息

條帶級別:記錄每個stripe所存儲的數(shù)據(jù)統(tǒng)計信息

行組級別:在script中,每10000行構(gòu)成一個行組,該級別的索引信息就是記錄這個行組中存儲的數(shù)據(jù)統(tǒng)計信息

1.5 效率和數(shù)據(jù)類型

通過orc文件的索引,可以快速定位要查詢的數(shù)據(jù)塊,規(guī)避不滿足查詢條件的數(shù)據(jù)塊和文件,相比讀取傳統(tǒng)的數(shù)據(jù)文件,進行查找時需要遍歷全部數(shù)據(jù),使用orc可以避免磁盤和網(wǎng)絡的I/O浪費,從而提高查詢效率。提升整個集群的工作負載。

hive以orc文件格式存儲時,描述這些數(shù)據(jù)的字段信息,字段類型信息以及編碼等信息都和orc中存儲的數(shù)據(jù)放在一起。

orc文件都是自描述的,不依賴外部的數(shù)據(jù),也不存儲在hive元數(shù)據(jù)庫中。

數(shù)據(jù)類型:boolean,tinyint、smallint、int、bigint、float、double、string、varchar、char、binary,timestamp和date、

復雜類型:struct、list、map、union

所有類型都可以接受null值。

1.6 acid事務的支持

0.14版本之前,hive表的數(shù)據(jù)只能新增或者整塊刪除分區(qū)表,而不能對表進行單個記錄的修改。0.14版本以后,orc文件類型能夠確保hive在工作時的原子性、一致性、隔離性、持久性的ACID事務能夠被正確的使用??梢詫螚l數(shù)據(jù)進行更新。

hive 的事務適合對大批量的數(shù)據(jù)進行更新,不適合頻繁的小批量數(shù)據(jù)。
下面是創(chuàng)建hive事務表的方法

--(1)開啟配置
----開啟并發(fā)支持,支持刪除和更新事務

set hive.support.concurrentcy=true;

----支持acid事務的表必須為分桶表

set hive.enforce.bucketing=true;

-----動態(tài)分區(qū),開啟事務需要開啟動態(tài)分區(qū)非嚴格模式

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict;

----所有的org.apache.hadoop.hive.sql.lockmgr.DummyTxnManager 不支持事務

set hive.txn.manager=org.apache.hadoop.hive.sql.lockmgr.DummyTxnManager

---開啟在相同的一個meatore實例運行初始化和清理的線程

set hive.compactor.initiator.on=true;

--設置每個metastore實例運行的線程數(shù)

set hive.compactor.worker.threads=1

--(2)創(chuàng)建表
-- 必須支持分桶
create table student_txn
( id int,
  name String
)cluster by (id) into 2 buckets
stored as orc
-- 表屬性中添加支持事務
tblproperties('transactional' = 'true')

--(3) 插入數(shù)據(jù),更新數(shù)據(jù)

insert into table student_txn values('1000','student_1001');

update student_txn set name='student_lzn' where id='1001';
1.7 orc相關(guān)的配置

orc.compress: 壓縮類型,none,zlib,snappy

orc.compress.size: 壓縮塊的大小,默認值262114(256kb)

orc.stripe.size: 寫stripe,可以使用的內(nèi)存緩沖池大小,默認67108864(64mb)

orc.row.index.stride: 行組級別的索引數(shù)量大小,默認10000,必須設定為大于10000的數(shù)。

orc.create.index: 是否創(chuàng)還能行組級別索引,默認true

orc.bloom.filter.columns: 需要創(chuàng)建的布隆過濾器的組

orc.bloom.filter.fpp: 使用布隆過濾器的假正(false positive)概率,默認為0.05

hive中使用布隆過濾器可以用較少的空間判定數(shù)據(jù)是否存在表中(如果不存在,那么100%就是不存在,存在的話再去查找確認存在)。

hive表配置屬性:

hive.stats.gather.num.threads: 收集統(tǒng)計信息的線程數(shù),默認10。只適用于orc這類已經(jīng)實現(xiàn)StatsProvidingReader接口的文件格式。

hive.exec.core.memory.pool: 寫orc文件,可以使用的已分配堆內(nèi)存的最大比例。

hive.exec.orc.default.stripe.size: 每個stripe文件,可以會用的緩沖池大小,默認64MB。

hive.exec.orc.default.block.size: 每個stripe存儲文件塊大小,默認256MB。

hive.exec.orc.dictionary.key.size.threshold: 閾值,默認0.8。如果字典中的鍵數(shù)大于所有非空數(shù)據(jù)行數(shù)的這一閾值,則關(guān)閉字典編碼。

hive.exec.orc.default.row.index.stride: hive表行組級索引數(shù)量大小,默認10000。

hive.exec.orc.default.block.padding: 寫orc文件時,是否填充已有的hdfs文件塊,默認false。

hive.exec.orc.block.padding.tolerance: 閾值,默認0.05,允許填充到hdfs文件塊的最小文件。

hive.exec.orc.default.compress: 定義orc文件壓縮編碼、解碼器。默認為zlib。

hive.merge.orcfile.stripe.level: 默認true。這時如果hive.merge.mapfile、hive.merge.mapredfiles或者hive.merge.tezfiles也開啟,在寫入數(shù)據(jù)到orc文件時,將會一strip級別合并小文件。

hive.exec.orc.zerocopy: 默認false,使用零拷貝方式讀取orc文件。

hive.exec.orc.skip.corrupt.data: 默認false,處理數(shù)據(jù)時,遇到異常拋出,為true,則跳過異常。

二、parquet文件

2.1 parquet的基本結(jié)構(gòu)

orc和pak,大數(shù)據(jù),hive,數(shù)據(jù)倉庫

表被分為多個行組,每個列塊又被拆分成若干的頁。

parquet存儲時,會記錄數(shù)據(jù)的元數(shù)據(jù),文件級別的元數(shù)據(jù),列塊級別的元數(shù)據(jù),頁級別的元數(shù)據(jù)。

文件級別的元數(shù)據(jù):表結(jié)構(gòu),文件記錄數(shù),文件擁有的行組數(shù),以及行組的總量記錄數(shù),每個行組下,列塊文件偏移量。

列塊級別的元數(shù)據(jù):列塊壓縮前后的數(shù)據(jù)大小,以及壓縮編碼,數(shù)據(jù)頁偏移量,索引頁偏移量,列塊數(shù)據(jù)記錄數(shù)。

頁級別的元數(shù)據(jù)(頁頭):頁的編碼信息,數(shù)據(jù)記錄數(shù)

parquet文件結(jié)構(gòu)同樣在查詢時可以過濾大量的記錄,但是orc對過濾做了額外的優(yōu)化,相比之下,查時,orc文件會消耗更少的資源。

2.2 parquet文件配置

parquet.block.size: 默認134217728byte,128MB,表示在內(nèi)存中的塊大小??梢栽O置更大,可以提高讀效率,但是寫時耗費更多的內(nèi)存。

parquet.page.size: 1048576byte,1MB,每個頁的大小,特指壓縮后的頁大小,讀取時先將頁進行解壓。頁是parquet操作的最小單位,每次讀取時,必須讀完一整頁數(shù)據(jù)才能訪問數(shù)據(jù)。設置過小會導致壓縮出現(xiàn)性能問題。

parquet.compression: 默認uncompressed、表示頁的壓縮方式。

parquet.enable.dictionary: 默認true,是否啟用字典編碼

parquet.dictionary.page.size: 默認1048576byte(1MB),使用字典碼,會在每一行,每一列中創(chuàng)建一個字典頁。使用字典編碼,如果在存儲的數(shù)據(jù)頁中重復數(shù)據(jù)較多,能夠起到很好的壓縮效果,也能減少每頁的內(nèi)存使用。

2.3 數(shù)據(jù)歸檔

對于hdfs中有大量小文件的表,可以通過hadoop歸檔(hadoop archive)的方式將文件歸并成為較大的文件。

歸并后的分區(qū)會先創(chuàng)建data.har目錄,包含:索引和數(shù)據(jù)。索引記錄歸并前的文件在歸并后的位置

數(shù)據(jù)歸檔:數(shù)據(jù)歸檔后不會對數(shù)據(jù)進行壓縮

—啟用數(shù)據(jù)歸檔

set hive.archive.enabled=true;

set hive.archive.har.parentdir.settable=true;

—歸檔后的最大文件大小

set har.partfile.size=1099511627776

—對分區(qū)執(zhí)行歸檔

set table table_name archive partition(partition_col=partition_val)

–將歸檔的分區(qū)還原為原來的普通分區(qū)

alter table table_name unarchive partition (partition_col=partition_val)文章來源地址http://www.zghlxwxcb.cn/news/detail-768723.html

到了這里,關(guān)于hive文件存儲格式orc和parquet詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 使用hive查看orc文件 orcfiledump命令詳解 異常處理(Failed to read ORC file)

    使用hive查看orc文件 orcfiledump命令詳解 異常處理(Failed to read ORC file)

    列式存儲以orc和parquet文件居多,現(xiàn)階段hive數(shù)據(jù)存儲的主流格式是orc,然后結(jié)合presto(目前對orc的支持好于parquet)做一些即席查詢。hive數(shù)據(jù)文件是直接存儲在hdfs上,但是hadoop貌似沒有提供直接查看文本的命令,好在hive提供了支持。 1. 命令幫助: hive --service orcfiledump --help 2. 數(shù)

    2024年02月16日
    瀏覽(25)
  • 大數(shù)據(jù)_Hadoop_Parquet數(shù)據(jù)格式詳解

    大數(shù)據(jù)_Hadoop_Parquet數(shù)據(jù)格式詳解

    之前有面試官問到了parquet的數(shù)據(jù)格式,下面對這種格式做一個詳細的解讀。 參考鏈接 : 列存儲格式Parquet淺析 - 簡書 Parquet 文件結(jié)構(gòu)與優(yōu)勢_parquet文件_KK架構(gòu)的博客-CSDN博客 Parquet文件格式解析_parquet.block.size_david\\\'fantasy的博客-CSDN博客 行組(Row Group)? 按照行將數(shù)據(jù)物理上劃分為

    2024年02月14日
    瀏覽(21)
  • 將Parquet文件的數(shù)據(jù)導入Hive 、JSON文件導入ES

    將Parquet文件的數(shù)據(jù)導入Hive 、JSON文件導入ES

    主要利用社區(qū)工具 https://github.com/apache/parquet-mr/ 編譯cli工具 查看元數(shù)據(jù)信息 查詢抽樣數(shù)據(jù) parquet 和 hive 的 field 類型映射關(guān)系 parquet 字段類型 hive 字段類型 BINARY STRING BOOLEAN BOOLEAN DOUBLE DOUBLE FLOAT FLOAT INT32 INT INT64 BIGINT INT96 TIMESTAMP BINARY + OriginalType UTF8 STRING BINARY + OriginalType DECI

    2024年02月08日
    瀏覽(21)
  • ORC與Parquet壓縮分析

    ORC與Parquet壓縮分析

    @date:2023年6月14日 OS:CentOS 6.5 JDK:1.8 內(nèi)存:256G 磁盤:HDD CPU:Dual 8-core Intel? Xeon? CPU (32 Hyper-Threads) E5-2630 v3 @ 2.40GHz 通過Orc和Parquet原生方式進行數(shù)據(jù)寫入,并采用以下算法進行壓縮測試 lzo lz4(lz4_raw) Zstandard snappy 數(shù)據(jù)schema 盡可能的保持parquet與ORC的schema一致。 parquet orc 將工

    2024年02月09日
    瀏覽(20)
  • 2、hive相關(guān)概念詳解--架構(gòu)、讀寫文件機制、數(shù)據(jù)存儲

    2、hive相關(guān)概念詳解--架構(gòu)、讀寫文件機制、數(shù)據(jù)存儲

    1、apache-hive-3.1.2簡介及部署(三種部署方式-內(nèi)嵌模式、本地模式和遠程模式)及驗證詳解 2、hive相關(guān)概念詳解–架構(gòu)、讀寫文件機制、數(shù)據(jù)存儲 3、hive的使用示例詳解-建表、數(shù)據(jù)類型詳解、內(nèi)部外部表、分區(qū)表、分桶表 4、hive的使用示例詳解-事務表、視圖、物化視圖、DDL

    2024年02月09日
    瀏覽(29)
  • HIVE基礎-文件存儲格式

    HIVE基礎-文件存儲格式

    Hive的文件存儲格式 文件主要存儲格式有四種:textfile、sequencefile、orc、parquet 在Hive建表的時候可以指定文件存儲格式,具體可見:HIVE操作語句–DDL篇 file_format代表文件格式; 常用的文件格式:textfile(文本)、sequencefile(二進制序列文件)、rcfile(列式存儲) 前提:行式存儲以及列

    2024年02月11日
    瀏覽(21)
  • 關(guān)于Hive中的存儲格式及壓縮格式詳解

    關(guān)于Hive中的存儲格式及壓縮格式詳解

    最近面試,遇到了關(guān)于Hive的數(shù)據(jù)存儲格式的問題,回答不盡人意,抽時間總結(jié)多看看關(guān)于Hive存儲格式和壓縮格式的內(nèi)容。 Hive底層數(shù)據(jù)是以HDFS文件的形式存儲在Hadoop中的,選擇一個合適的文件存儲格式及壓縮方式,也是 Hive 優(yōu)化的一個重點。不同的文件存儲格式及壓縮格式

    2024年02月04日
    瀏覽(15)
  • 在Hive/Spark上執(zhí)行TPC-DS基準測試 (PARQUET格式)

    在Hive/Spark上執(zhí)行TPC-DS基準測試 (PARQUET格式)

    在上一篇文章:《在Hive/Spark上運行執(zhí)行TPC-DS基準測試 (ORC和TEXT格式)》中,我們介紹了如何使用 hive-testbench 在Hive/Spark上執(zhí)行TPC-DS基準測試,同時也指出了該項目不支持parquet格式。 如果我們想要生成parquet格式的測試數(shù)據(jù),就需要使用其他工具了。本文選擇使用另外一個開源

    2024年02月12日
    瀏覽(42)
  • 【004hive基礎】hive的文件存儲格式與壓縮

    【004hive基礎】hive的文件存儲格式與壓縮

    HIve的文件存儲格式常見的有四種:textfile 、sequencefile、orc、parquet ,前面兩種是行式存儲,后面兩種是列式存儲。 hive的存儲格式指表的數(shù)據(jù)是如何在HDFS上組織排列的。 ? 如下圖,箭頭的方向代表了數(shù)據(jù)是如何進行(寫入)組織排列的。 ? 我們討論一下行、列存儲在讀寫上

    2024年02月03日
    瀏覽(20)
  • 在Hive/Spark上運行執(zhí)行TPC-DS基準測試 (ORC和TEXT格式)

    《大數(shù)據(jù)平臺架構(gòu)與原型實現(xiàn):數(shù)據(jù)中臺建設實戰(zhàn)》一書由博主歷時三年精心創(chuàng)作,現(xiàn)已通過知名IT圖書品牌電子工業(yè)出版社博文視點出版發(fā)行,點擊《重磅推薦:建大數(shù)據(jù)平臺太難了!給我發(fā)個工程原型吧!》了解圖書詳情,京東購書鏈接:https://item.jd.com/12677623.html,掃描

    2024年02月12日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包