亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

前言

Hive的分區(qū)和分桶都是細(xì)化數(shù)據(jù)管理,加快數(shù)據(jù)查詢和分析,兩者有什么區(qū)別呢?下面講解一下分區(qū)和分桶的原理。

分區(qū)及原理

Hive的分區(qū)表可以有一個(gè)或多個(gè)分區(qū)鍵,用于確定數(shù)據(jù)的存儲(chǔ)方式。分區(qū)(除了作為存儲(chǔ)單元)還允許用戶有效地識(shí)別滿足指定條件的數(shù)據(jù),顯著加快查詢分析速度。分區(qū)字段并不是數(shù)據(jù)的一部分,而是加載時(shí)虛擬的列,數(shù)據(jù)在HDFS上存儲(chǔ)時(shí)分區(qū)就相當(dāng)于文件目錄。

分區(qū)建表SQL

分區(qū)表使用partitioned by 子句指定,以指定字段列,需要指定字段類型。

--分區(qū)表建表sql
USE testdb;
CREATE TABLE test_partition (
    field1 String Comment 'field1 comment',
    field2 String Comment 'field2 comment')
Comment 'table comment'
PARTITIONED BY(d String Comment 'date')
STORED AS ORC;

--分區(qū)表查詢
SELECT *
FROM testdb.test_partition
WHERE d = '2022-02-01'

建表完成后查看LOCATION參數(shù)為:'
hdfs://ns/user/hive/warehouse/testdb.db/test_partition'。當(dāng)存儲(chǔ)數(shù)據(jù)時(shí),2022-02-01日期的數(shù)存儲(chǔ)在hdfs://ns/user/hive/warehouse/testdb.db/test_partition/d=2022-02-01目錄下。

如果指定多個(gè)分區(qū)列用逗號(hào)分隔開,如:建表是PARTITIONED BY(d String Comment 'date',h String Comment 'hour'),分區(qū)字段日期常用格式:d=yyyy-MM-dd,h=HH。第二個(gè)參數(shù)會(huì)作為子目錄存儲(chǔ)在HDFS上:***/test_partition/d=2022-02-01/h=12

分桶及原理

分桶表中的數(shù)據(jù)可以根據(jù)表中某列的哈希函數(shù)的值依次劃分為存儲(chǔ)桶,用于分桶的字段是數(shù)據(jù)中實(shí)際的一列。其原理:根據(jù)分桶的列計(jì)算hash值,對(duì)hash值取模運(yùn)算,將數(shù)據(jù)放到對(duì)應(yīng)的桶里。

分桶建表SQL

分桶表由clustered by 子句指定,指定字段為真實(shí)字段,需要指定桶的個(gè)數(shù),桶編號(hào)從零開始。

--分桶表建表sql,創(chuàng)建4個(gè)桶
USE testdb;
CREATE TABLE test_bucket (
    field1 String Comment 'field1 comment',
    field2 String Comment 'field2 comment')
COMMENT 'table comment'
clustered by (field1) into 4 buckets
row format delimited
fields terminated by ',';

--分桶表查詢
SELECT *
FROM testdb.test_bucket
WHERE field1 = '0'

相同點(diǎn)和不同點(diǎn)

相同點(diǎn):分區(qū)和分桶表都是Hive細(xì)化數(shù)據(jù)管理,加快數(shù)據(jù)查詢和分析。

不同點(diǎn)

  • 分區(qū)字段不是實(shí)際的列,分桶字段必須是實(shí)際的列。
  • 分區(qū)表的分區(qū)數(shù)量可以一直增長(zhǎng),而分桶表創(chuàng)建好后桶的數(shù)量就固定不變了。

思考

因?yàn)榉滞霸硎怯胔ash計(jì)算后取模計(jì)算分桶,用哈希計(jì)算必然會(huì)沖突,如果大批量數(shù)據(jù)計(jì)算的hash值相等,極端情況下全部數(shù)據(jù)集中到一個(gè)桶中時(shí),就導(dǎo)致分桶表退化成一張維表。

分享到:
標(biāo)簽:Hive
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定