欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解hive常見表結(jié)構(gòu)

 更新時間:2022年08月11日 09:20:24   作者:q495673918  
hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制,這篇文章主要介紹了hive常見表結(jié)構(gòu),需要的朋友可以參考下

hive簡介

hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制。hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行。Hive的優(yōu)點是學習成本低,可以通過類似SQL語句實現(xiàn)快速MapReduce統(tǒng)計,使MapReduce變得更加簡單,而不必開發(fā)專門的MapReduce應(yīng)用程序。hive十分適合對數(shù)據(jù)倉庫進行統(tǒng)計分析。 [1]

1.外部表

當文件已經(jīng)存在或位于遠程位置時,我們可以使用外部表,外部表的存儲由自己指定。

特點:刪除表,數(shù)據(jù)依然存在

建表語句

CREATE EXTERNAL TABLE tmp_xx(id int,name String);

2.內(nèi)部表

hive管理控制表的整個生命周期,存儲位置在hive.metastore.warehouse.dir目錄下。

特點:刪除表時,數(shù)據(jù)也被刪除

建表語句

CREATE TABLE tmp_xx(id int,name String);

3.分區(qū)表

把一個表的數(shù)據(jù)以分區(qū)字段的值作為目錄去存儲。

特點:

  • 縮小了硬盤掃描數(shù)據(jù)的區(qū)域,減少磁盤IO
  • 將表數(shù)據(jù)存儲在多個分區(qū)目錄,便于獨立管理(創(chuàng)建,刪除)數(shù)據(jù)

存儲結(jié)構(gòu)如下

 

1.靜態(tài)分區(qū)

在執(zhí)行前就知道分區(qū)的值

  • 可以根據(jù)PARTITIONED BY創(chuàng)建分區(qū)表,一個表可以擁有一個或者多個分區(qū),每個分區(qū)以文件夾的形式單獨存在表文件夾的目錄下。
  • 分區(qū)是以字段的形式在表結(jié)構(gòu)中存在,通過describe table命令可以查看到字段存在,但是該字段不存放實際的數(shù)據(jù)內(nèi)容,僅僅是分區(qū)的表示。
  • 分區(qū)建表分為2種,一種是單分區(qū),也就是說在表文件夾目錄下只有一級文件夾目錄。另外一種是多分區(qū),表文件夾下出現(xiàn)多文件夾嵌套模式。

單分區(qū)相關(guān)語法

#單分區(qū)表創(chuàng)建
CREATE TABLE tmp_xx(id int,name String) partitioned by (d string);
 
#添加分區(qū)
ALTER TABLE tmp_partition ADD IF NOT EXISTS PARTITION (d='20220628')
 
#刪除分區(qū)
ALTER TABLE tmp_partition DROP IF EXISTS PARTITION (d='20220628')
 
#數(shù)據(jù)寫入
INSERT OVERWRITE TABLE tmp_xx PARTITION (d='20220629')
SELECT id, name FROM tmp_yy limit 10;
 
#查看分區(qū)數(shù)據(jù)
select * from tmp_xx where d='20220629'
 
#查看表分區(qū)
show partitions table;
 
#查看目錄
hadoop dfs -du -h /user/hive/warehouse/tmp_xxx

多分區(qū)相關(guān)語法

#多分區(qū)表創(chuàng)建
CREATE TABLE tmp_xx(id int,name String) partitioned by (d String,h String);
 
#數(shù)據(jù)寫入
INSERT OVERWRITE TABLE tmp_xx PARTITION (d='20220629',h='15')
SELECT id, name FROM tmp_yy limit 10;
 
#查看分區(qū)數(shù)據(jù)
select * from tmp_xx where d='20220629' and h='15'

2.動態(tài)分區(qū)

執(zhí)行時才知道分區(qū)的值,相比于靜態(tài)分區(qū)可以一次寫入多個分區(qū)數(shù)據(jù),而不用在每次分區(qū)寫入的時候一次執(zhí)行多次insert,其他的地方和靜態(tài)分區(qū)都是一樣的。

官方文檔:https://cwiki.apache.org/confluence/display/Hive/DynamicPartitions

特點:

  • 在INSERT … SELECT …查詢中,必須在SELECT語句中的列中最后指定動態(tài)分區(qū)列,并按PARTITION()子句中出現(xiàn)的順序進行排列
  • 如果動態(tài)分區(qū)和靜態(tài)分區(qū)一起使用,必須是靜態(tài)分區(qū)的字段在前,動態(tài)分區(qū)的字段在后。

想要使用動態(tài)分區(qū)需要hive開啟動態(tài)分區(qū),參數(shù)如下

set hive.exec.dynamic.partition=true;   --開啟動態(tài)分區(qū) 默認為false,不開啟
set hive.exec.dynamic.partition.mode=nonstrict; --指定動態(tài)分區(qū)模式,默認為strict
 
下面參數(shù)可選
SET hive.exec.max.dynamic.partitions=2048; 
SET hive.exec.max.dynamic.partitions.pernode=256; 
SET hive.exec.max.created.files=10000; 
SET hive.error.on.empty.partition=true;

語法:

#寫入數(shù)據(jù)
INSERT overwrite TABLE tmp_partition PARTITION(d)
SELECT id,NAME,d FROM tmp_xxx
 
#寫入多分區(qū)數(shù)據(jù)
INSERT overwrite TABLE tmp_partition PARTITION(d,h)
SELECT id,NAME,d,h FROM tmp_xxx
 
#混合分區(qū)使用,使用動態(tài)分區(qū)和靜態(tài)分區(qū),靜態(tài)分區(qū)必須在前
INSERT overwrite TABLE tmp_partition PARTITION(d='20220629',h)
SELECT id,NAME,h FROM tmp_xxx

4.分桶表

對比分區(qū)表,分桶表是對數(shù)據(jù)進行更加細粒度的劃分。一般用的比較少,在數(shù)據(jù)量比較小的時候使用分桶表可能性能更差。

分桶表將整個數(shù)據(jù)內(nèi)容按照分桶字段的哈希值進行區(qū)分,使用該哈希值除以桶的個數(shù)得到取余數(shù),bucket_id = column.hashcode % bucket.num,余數(shù)決定了該條記錄會被分在哪個桶中。余數(shù)相同的記錄會分在一個桶里。需要注意的是,在物理結(jié)構(gòu)上,一個桶對應(yīng)一個文件,而分區(qū)表只是一個目錄,至于目錄下有多少數(shù)據(jù)是不確定的。

分桶表和分區(qū)表的區(qū)別

分區(qū)表分桶表
存儲結(jié)構(gòu)文件目錄/文件夾
創(chuàng)建語句partitioned byclustered by,指定桶個數(shù)
數(shù)量分區(qū)個數(shù)可增長分桶數(shù)指定后不在增長
用途避免掃描全表,通過分區(qū)列指定查詢目錄提高查詢速度抽樣及大表join時提高效率

想要使用分桶表需要開啟分桶機制,默認開啟

set hive.enforce.bucketing=true

建表

CREATE TABLE tmp_bucket(id INT,NAME STRING) clustered BY (id) INTO 4 buckets

寫入數(shù)據(jù)之后查看文件結(jié)構(gòu),發(fā)現(xiàn)表文件夾下有4個文件,說明分桶成功

 

1.抽樣

#建表
select columns from table tablesample(bucket x out of y on column);
-- x:表示從第幾個分桶進行抽樣
-- y:表示每隔幾個分桶取一個分桶,y必須為表bucket的整數(shù)倍或者因子
 
#從分桶表的建表語句中可知,我們一共分了4個桶,所以我們這里x取1,y取2
一共抽取2(4/2)個桶,從第一個桶開始,每隔2個桶抽取一次,即第一個桶和
第三個桶。
SELECT id,NAME FROM tmp_bucket tablesample(bucket 1 OUT of 2 ON id) LIMIT 10

2.map-side join

獲得更高的查詢處理效率。桶為表加上了額外的結(jié)構(gòu),Hive 在處理有些查詢時能利用這個結(jié)構(gòu)。

具體而言,連接兩個在(包含連接列的)相同列上劃分了桶的表,可以使用 Map 端連接 (Map-side join)高效的實現(xiàn)。比如JOIN操作。對于JOIN操作兩個表有一個相同的列,如果對這兩個表都進行了桶操作。那么將保存相同列值的桶進行JOIN操作就可以,可以大大較少JOIN的數(shù)據(jù)量。

需要注意的是這種方式只適用于大表,小表不適用,表的大小至少得幾個G或幾個T,此功能未做測試。

5.表的文件存儲格式

  • STORED AS 指定表的文件存儲格式默認TEXT FILE(文本文件)格式存儲,
  • 默認存儲格式可通過hive.default.fileformat配置修改
  • 其它常用存儲格式 Parquet(列式),Avro,ORC(列式),Sequence File,INPUT FORMAT & OUTPUT FORMAT (二進制)

1.TEXTFILE

STORED AS INPUTFORMAT                              
   'org.apache.hadoop.mapred.TextInputFormat'       
 OUTPUTFORMAT                                       
   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

純文本文件存儲,TEXTFILE默認是hive的默認存儲方式,用戶可以通過配置 hive.default.fileformat 來修改。

在HDFS上可直接查看數(shù)據(jù),可結(jié)合Gzip、Bzip2使用(系統(tǒng)自動檢查,執(zhí)行查詢時自動解壓),但是使用這種方式,hive不會對數(shù)據(jù)進行切分,無法對數(shù)據(jù)進行并行操作。

存儲方式:行存儲

優(yōu)勢:可使用任意的分割符進行分割;在hdfs上可查可標記;加載速度較快;

劣勢:不會對數(shù)據(jù)進行壓縮處理,存儲空間較大、磁盤開銷大、數(shù)據(jù)解析開銷大。

2.SEQUENCEFILE

STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.SequenceFileInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.mapred.SequenceFileOutputFormat'

存儲為壓縮的序列化文件。是hadoop中的標準序列化文件,可壓縮,可分塊。SequenceFile是一個由二進制序列化過的key/value的字節(jié)流組成的文本存儲文件,它可以在map/reduce過程中的input/output 的format時被使用。

SequenceFile 有三種壓縮態(tài):

  • Uncompressed – 未進行壓縮的狀
  • record compressed - 對每一條記錄的value值進行了壓縮(文件頭中包含上使用哪種壓縮算法的信息)
  • block compressed – 當數(shù)據(jù)量達到一定大小后,將停止寫入進行整體壓縮,整體壓縮的方法是把所有的keylength,key,vlength,value 分別合在一起進行整體壓縮,塊的壓縮效率要比記錄的壓縮效率高 hive中通過設(shè)置SET mapred.output.compression.type=BLOCK;來修改SequenceFile壓縮方式。

存儲方式:行存儲

優(yōu)勢:存儲時候會對數(shù)據(jù)進行壓縮處理,存儲空間??;支持文件切割分片;查詢速度比TestFile速度快;

劣勢:無法可視化展示數(shù)據(jù);不可以直接使用load命令對數(shù)據(jù)進行加載;自身的壓縮算法占用一定的空間

3.RCFILE

STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.RCFileInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'

文件存儲方式為二進制文件。以RcFile文件格式存儲的表也會對數(shù)據(jù)進行壓縮處理,在HDFS上以二進制格式存儲,不可直接查看。

RCFILE是一種行列存儲相結(jié)合的存儲方式,該存儲結(jié)構(gòu)遵循的是“先水平劃分,再垂直劃分”的設(shè)計里面。首先,將數(shù)據(jù)按行分塊形成行組,這樣可以使同一行的數(shù)據(jù)在一個節(jié)點上。然后,把行組內(nèi)的數(shù)據(jù)列式存儲,將列維度的數(shù)據(jù)進行壓縮,并提供了一種lazy解壓技術(shù)。

Rcfile在進行數(shù)據(jù)讀取時會順序處理HDFS塊中的每個行組,讀取行組的元數(shù)據(jù)頭部和給定查詢需要的列,將其加載到內(nèi)存中并進行解壓,直到處理下一個行組。但是,rcfile不會解壓所有的加載列,解壓采用lazy解壓技術(shù),只有滿足where條件的列才會被解壓,減少了不必要的列解壓。

在rcfile中每一個行組的大小是可變的,默認行組大小為4MB。行組變大可以提升數(shù)據(jù)的壓縮效率,減少并發(fā)存儲量,但是在讀取數(shù)據(jù)時會占用更多的內(nèi)存,可能影響查詢效率和其他的并發(fā)查詢。用戶可根據(jù)具體機器和自身需要調(diào)整行組大小。

存儲方式:行列混合的存儲格式,將相近的行分塊后,每塊按列存儲。

優(yōu)勢:基于列存儲,壓縮快且效率更高,;占用的磁盤存儲空間小,讀取記錄時涉及的block少,IO小;查詢列時,讀取所需列只需讀取列所在塊的頭部定義,讀取速度快(在讀取全量數(shù)據(jù)時,性能與Sequence沒有明顯區(qū)別);

劣勢:無法可視化展示數(shù)據(jù);導入數(shù)據(jù)時耗時較長;不能直接使用load命令對數(shù)據(jù)進行加載;自身的壓縮算法占用一定空間,但比SequenceFile所占空間稍??;

4.ORC

ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
  STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'

ORC (Optimized Record Columnar)是RC File 的改進,主要在壓縮編碼、查詢性能上進行了升級; ORC具備一些高級特性,如:update操作,支持ACID,支持struct、array復雜類型。Hive1.x版本后支持事務(wù)和update操作,就是基于ORC實現(xiàn)的(目前其他存儲格式暫不支持)。

存儲方式:按行組分割整個表,行組內(nèi)進行列式存儲。數(shù)據(jù)按行分塊,每塊按照列存儲

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

首先做一些名詞注釋:

ORC文件:保存在文件系統(tǒng)上的普通二進制文件,一個ORC文件中包含多個stripe,每個stripe包含多條記錄,這些記錄按照列進行獨立存儲。

文件級元數(shù)據(jù):包括文件的描述信息postscript、文件meta信息(包括整個文件的統(tǒng)計信息)、所有的stripe的信息和schema信息。

Stripe:一組行形成一個stripe,每次讀取文件是以行組為單位的,一般為hdfs的塊大小,保存了每一列的索引和數(shù)據(jù)。

Stripe元數(shù)據(jù):保存stripe的位置、每個列在該stripe的統(tǒng)計信息以及所有的stream類型和位置。

Row group:索引的最小單位,一個stripe中包含多個row group,默認為10000個值組成。

Stream:一個stream表示文件中的一段有效的數(shù)據(jù),包括索引和數(shù)據(jù)。索引stream保存每一個row group的位置和統(tǒng)計信息,數(shù)據(jù)stream包括多種類型的數(shù)據(jù),具體情況由該列類型和編碼方式?jīng)Q定。

在ORC文件中保存了三個層級的統(tǒng)計信息,分別為文件級別、stripe級別和row group級別,他們可以根據(jù)下發(fā)的搜索參數(shù)判斷是否可以跳過某些數(shù)據(jù)。在這些統(tǒng)計信息中包含成員數(shù)和是否有null值,且對不同類型的數(shù)據(jù)設(shè)置了特定統(tǒng)計信息。

ORC的文件結(jié)構(gòu)如下:

 

文件級別:

在ORC文件的末尾記錄了文件級別的統(tǒng)計信息,包括整個文件的列統(tǒng)計信息。這些信息主要是用于查詢的優(yōu)化,也可以為一些簡單的聚合查詢?nèi)鏼ax、min、sum輸出結(jié)果。

Stripe級別:

保留行級別的統(tǒng)計信息,用于判斷該Stripe中的記錄是否符合where中的條件,是否需要被讀取。

Row group級別:

進一步避免讀取不必要的數(shù)據(jù),在邏輯上將一個column的index分割成多個index組(默認為10000,可配置)。以這些index記錄為一個組,對數(shù)據(jù)進行統(tǒng)計。在查詢時可根據(jù)組級別的統(tǒng)計信息過濾掉不必要的數(shù)據(jù)。

優(yōu)勢:具有很高的壓縮比,且可切分;由于壓縮比高,在查詢時輸入的數(shù)據(jù)量小,使用的task減少,所以提升了數(shù)據(jù)查詢速度和處理性能;每個task只輸出單個文件,減少了namenode的負載壓力;在ORC文件中會對每一個字段建立一個輕量級的索引,如:row group index、bloom filter index等,可以用于where條件過濾;可使用load命令加載,但加載后select * from xx;無法讀取數(shù)據(jù);查詢速度比rcfile快;支持復雜的數(shù)據(jù)類型;

劣勢:無法可視化展示數(shù)據(jù);讀寫時需要消耗額外的CPU資源用于壓縮和解壓縮,但消耗較少;對schema演化支持較差;

5.Parquet

ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
  STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'

Parquet 最初的設(shè)計動機是存儲嵌套式數(shù)據(jù),,比如Protocolbuffer,thrift,json等,將這類數(shù)據(jù)存儲成列式格式,以方便對其高效壓縮和編碼,且使用更少的IO操作取出需要的數(shù)據(jù)??偟膩碚fParquet與orc相比的主要優(yōu)勢是對嵌套結(jié)構(gòu)的支持,orc的多層級嵌套表達復雜底層未采用google dremel類似實現(xiàn),性能和空間損失較大。

存儲方式:列式存儲

優(yōu)勢:具有高效壓縮和編碼,是使用時有更少的IO取出所需數(shù)據(jù),速度比ORC快;其他方面類似于ORC;

劣勢:不支持update;不支持ACID;不支持可視化展示數(shù)據(jù)

 
 ORCParquet
存儲方式列存儲列存儲
嵌套式結(jié)構(gòu)orc的多層級嵌套表達復雜且底層未采用google dremel類似實現(xiàn),性能和空間損失較大支持比較完美
ACID支持不支持
update操作支持不支持
索引粗粒度索引,block/group/chuck級別統(tǒng)計信息粗粒度索引,file/stripe/row級別統(tǒng)計信息,不能精確到列建索引。
查詢性能比parquet稍高比ORC稍低
壓縮

 

6.總結(jié)

需要查看到所存儲的具體數(shù)據(jù)內(nèi)容的小型查詢,可以采用默認文件格式textfile。不需要查看具體數(shù)據(jù)的小型查詢時可使用sequencefile文件格式。當用于大數(shù)據(jù)量的查詢時,可以使用rcfile、ORC、parquet,一般情況下推薦使用ORC,若字段數(shù)較多,不涉及到更新且取部分列查詢場景多的情況下建議使用parquet。

需要通過sqoop+hive與關(guān)系型數(shù)據(jù)庫交互時,import和export的hive表需要是textfile格式。如果需要操作的表不是此存儲格式,需要insert到textfile格式的表中再操作。

一、ORC與Parquet總結(jié)對比 1、orc不支持嵌套結(jié)構(gòu)(但可通過復雜數(shù)據(jù)類型如map<k,v>間接實現(xiàn)),parquet支持嵌套結(jié)構(gòu) 2、orc與hive的兼容性強,作為hive的常用存儲格式 3、orc相比parquet的存儲壓縮率較高,如下圖 4、orc導入數(shù)據(jù)和數(shù)據(jù)查詢的的速度比parquet快

 

5.表的行存儲格式(row format)

ROW FORMAT:控制文件數(shù)據(jù)和hive表中Row數(shù)據(jù)的轉(zhuǎn)換,有DELIMITED和SERDE兩種值,可以將ROW FORMAT看做FileFormat的功能支持或?qū)崿F(xiàn),我們設(shè)置了FileFormat后,底層數(shù)據(jù)格式的轉(zhuǎn)換是依賴SerDe來做的。

DELIMITED:表示使用默認的LazySimpleSerDe類來處理數(shù)據(jù),一般用于用分隔符分隔的文本文,默認使用native Serde

SERDE:Serde是 Serializer/Deserializer的簡寫。hive使用Serde進行行對象的序列與反序列化。Hive使用SerDe讀取和寫入行對象。讀取就是hdfs文件反序列化成對象,寫入就是對象序列化存儲hdfs

read:HDFS files --> InputFileFormat --> <key, value> --> Deserializer --> Row object
write: row object --> Serializer --> <key, value> --> OutputFileFormat --> HDFS files

一般用于比較復雜格式的文本文件,比如JSON格式行、正則表達式可以匹配出的行,像訪問日志。

 6.表屬性

1.壓縮

1.為什么要壓縮

可以提高吞吐量和性能,大量減少磁盤存儲空間。同時壓縮也會減少文件在磁盤間的傳輸及IO消耗,但是壓縮和截壓縮會帶來額外的CPU開銷,但是可以節(jié)省更多的IO消耗和內(nèi)存使用。

2.壓縮常見的格式

壓縮方式壓縮后大小壓縮速度是否可切分
GZIP
BZIP2
LZO
Snappy

3.壓縮性能比較

壓縮算法 原始文件大小 壓縮文件大小 壓縮速度 解壓速度

gzip 8.3GB 1.8GB 17.5MB/S 58MB/S

bzip2 8.3GB 1.1GB 2.4MB/S 9.5MB/S

lzo 8.3GB 2.9GB 49.3MB/S 74.6MB/S

tblproperties ('orc.compress'='snappy')
tblproperties ('parquet.compression'='snappy');

3)開啟MAP輸出階段壓縮 (1)開啟hive中間傳輸數(shù)據(jù)壓縮功能

hive (default)>set hive.exec.compress.intermediate=true;

(2)開啟mapreduce中map輸出壓縮功能

hive (default)>set mapreduce.map.output.compress=true;

(3)設(shè)置mapreduce中map輸出數(shù)據(jù)的壓縮方式

hive (default)>set mapreduce.map.output.compress.codec=

org.apache.hadoop.io.compress.SnappyCodec;

4)開啟REDUCE輸出階段壓縮,比map端壓縮事兒多 (1)開啟hive最終輸出數(shù)據(jù)壓縮功能

hive (default)>set hive.exec.compress.output=true;

(2)開啟mapreduce最終輸出數(shù)據(jù)壓縮

hive (default)>set mapreduce.output.fileoutputformat.compress=true;

(3)設(shè)置mapreduce最終數(shù)據(jù)輸出壓縮方式

hive (default)> set mapreduce.output.fileoutputformat.compress.codec =

org.apache.hadoop.io.compress.SnappyCodec;

(4)設(shè)置mapreduce最終數(shù)據(jù)輸出壓縮為塊壓縮

hive (default)> set mapreduce.output.fileoutputformat.compress.type=BLOCK;

在生產(chǎn)環(huán)境中,常用的HIVE存儲格式:列式存儲的orc和parquet

HIVE壓縮格式:冷數(shù)據(jù)-----gzip壓縮(壓縮比高,壓縮解壓縮速度高,不可切割);

非冷數(shù)據(jù)------lzo(可切割)和snappy(不可切割)

LZO支持切片,Snappy不支持切片。 ORC和Parquet都是列式存儲。 ORC和Parquet 兩種存儲格式都是不能直接讀取的,一般與壓縮一起使用,可大大節(jié)省磁盤空間。 選擇:ORC文件支持Snappy壓縮,但不支持lzo壓縮,所以在實際生產(chǎn)中,使用Parquet存儲 + lzo壓縮的方式更為常見,這種情況下可以避免由于讀取不可分割大文件引發(fā)的數(shù)據(jù)傾斜。 但是,如果數(shù)據(jù)量并不大(預測不會有超大文件,若干G以上)的情況下,使用ORC存儲,snappy壓縮的效率還是非常高的。

ORC支持三種壓縮:ZLIB,SNAPPY,NONE。最后一種就是不壓縮,orc默認采用的是ZLIB壓縮。

Parquet支持的壓縮:UNCOMPRESSED、 SNAPPY、GZP和LZO,默認UNCOMPRESSED不壓縮

到此這篇關(guān)于hive常見表結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)hive表結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Maven nexus 安裝nexus私服出現(xiàn)的問題和解決辦法

    Maven nexus 安裝nexus私服出現(xiàn)的問題和解決辦法

    本文主要介紹安裝nexus私服的時候出現(xiàn)問題的解決辦法,這里整理了兩種問題并詳細說明了解決辦法,有需要的朋友可以參考下
    2016-08-08
  • navicat導入CSV文件詳細操作步驟

    navicat導入CSV文件詳細操作步驟

    通過Navicat我們可以很方便的完成備份和還原操作,下面這篇文章主要給大家介紹了關(guān)于navicat導入CSV文件的詳細操作步驟,需要的朋友可以參考下
    2023-12-12
  • Navicat12.1系列破解激活教程親測有效

    Navicat12.1系列破解激活教程親測有效

    這篇文章主要介紹了 Navicat12.1系列破解激活教程親測有效,本文給大家介紹的非常詳細,對大家的學習或工作工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • SQL知識點之列轉(zhuǎn)行Unpivot函數(shù)

    SQL知識點之列轉(zhuǎn)行Unpivot函數(shù)

    這篇文章主要給大家介紹了關(guān)于SQL知識點之列轉(zhuǎn)行Unpivot函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • SQL中游標(cursor)的基本使用實例

    SQL中游標(cursor)的基本使用實例

    當你檢索的數(shù)據(jù)只是一條記錄時,你所編寫的事務(wù)語句代碼往往使用SELECT INSERT語句,但如果從某一結(jié)果集中逐一地讀取一條記錄呢?游標為我們提供了一種極為優(yōu)秀的解決方案,這篇文章主要給大家介紹了關(guān)于SQL中游標(cursor)基本使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • 你應(yīng)該知道的區(qū)塊鏈運作7個核心技術(shù)

    你應(yīng)該知道的區(qū)塊鏈運作7個核心技術(shù)

    這篇文章主要為大家詳細介紹了你應(yīng)該知道的區(qū)塊鏈運作7個核心技術(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 將sqlite3中數(shù)據(jù)導入到mysql中的實戰(zhàn)教程

    將sqlite3中數(shù)據(jù)導入到mysql中的實戰(zhàn)教程

    最近因為工作的需求,需要將sqlite3中的數(shù)據(jù)導入到mysql中去,發(fā)現(xiàn)網(wǎng)上的一些教程都不夠詳細,索性自己寫一篇,下面這篇文章主要給大家介紹了關(guān)于將sqlite3數(shù)據(jù)庫中的數(shù)據(jù)導入到mysql數(shù)據(jù)庫中的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • SQL 按特定字段值排序

    SQL 按特定字段值排序

    SQL 按特定字段值排序的代碼,有需要的朋友可以參考下。
    2009-08-08
  • 一款高顏值且免費的 SQL 開發(fā)工具之Beekeeper Studio詳解

    一款高顏值且免費的 SQL 開發(fā)工具之Beekeeper Studio詳解

    今天給大家推薦一款適用于Windows,Linux和Mac的跨平臺免費的開源SQL編輯器和數(shù)據(jù)庫管理應(yīng)用程序 —— beekeeper-studio。對Beekeeper Studio 安裝使用教程感興趣的朋友一起看看吧
    2021-09-09
  • 數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)詳解之三級模式結(jié)構(gòu)

    數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)詳解之三級模式結(jié)構(gòu)

    這篇文章主要為大家介紹了數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu),文中通過圖文的方式詳細的解析了數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)的三級模式結(jié)構(gòu),有需要的朋友可以借鑒參考下
    2021-09-09

最新評論