日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive分区用2个字段有何限制_[特性]Hive动态分区功能使用

發(fā)布時間:2025/3/11 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive分区用2个字段有何限制_[特性]Hive动态分区功能使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

[特性]Hive動態(tài)分區(qū)功能使用

2016-01-31 21:40

說明

Hive有兩種分區(qū),一種是靜態(tài)分區(qū),也就是普通的分區(qū)。另一種是動態(tài)分區(qū)。動態(tài)分區(qū)在數(shù)據(jù)導入時,會根據(jù)具體的字段值自行決定導入,并創(chuàng)建相應的分區(qū)。使用上更為方面。

舉例

準備工作

創(chuàng)建一個表,并導入相關數(shù)據(jù),作為源數(shù)據(jù)。

1

2

3CREATE TABLE student_data(id STRING, name STRING, year INT, major INT)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ',';

該表有如下數(shù)據(jù):

SELECT * FROM student_data;

+------------------+--------------------+--------------------+---------------------+--+

| student_data.id | student_data.name | student_data.year | student_data.major |

+------------------+--------------------+--------------------+---------------------+--+

| 2001810081 | cheyo | 2001 | 810 |

| 2001810082 | pku | 2001 | 810 |

| 2001810083 | rocky | 2001 | 810 |

| 2001810084 | stephen | 2001 | 810 |

| 2001810086 | rongqi | 2001 | 810 |

| 2001810087 | hauaa | 2001 | 810 |

| 2001810088 | file | 2001 | 810 |

| 2001810089 | note | 2001 | 810 |

| 2001820081 | hello | 2001 | 820 |

| 2001820082 | jaccy | 2001 | 820 |

| 2001820083 | micky | 2001 | 820 |

| 2001820084 | lucy | 2001 | 820 |

| 2002810081 | cindy | 2002 | 810 |

| 2002810082 | lemon | 2002 | 810 |

| 2002820081 | jacky | 2002 | 820 |

| 2002820082 | cindy | 2002 | 820 |

| 2002820083 | happy | 2002 | 820 |

| 2002820084 | snow | 2002 | 820 |

+------------------+--------------------+--------------------+---------------------+--+

使用靜態(tài)分區(qū)

創(chuàng)建一個表,準備用靜態(tài)分區(qū)方式將數(shù)據(jù)導入此表。

1

2

3

4CREATE TABLE student_static_partition(id STRING, name STRING)

PARTITIONED BY (year INT, major INT)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ',';

使用靜態(tài)分區(qū)方式,將源表中的所有數(shù)據(jù)導入此表:

1

2

3

4

5

6

7

8

9

10

11INSERT INTO TABLE student_static_partition PARTITION(year=2001,major=810)

SELECT id,name FROM student_data WHERE year=2001 AND major=810;

INSERT INTO TABLE student_static_partition PARTITION(year=2001,major=820)

SELECT id,name FROM student_data WHERE year=2001 AND major=820;

INSERT INTO TABLE student_static_partition PARTITION(year=2002,major=810)

SELECT id,name FROM student_data WHERE year=2002 AND major=810;

INSERT INTO TABLE student_static_partition PARTITION(year=2002,major=820)

SELECT id,name FROM student_data WHERE year=2002 AND major=820;

導完后,查詢該表的分區(qū)信息:

1

2

3

4

5

6

7

8

9SHOW PARTITIONS student_static_partition;

+----------------------+--+

| partition |

+----------------------+--+

| year=2001/major=810 |

| year=2001/major=820 |

| year=2002/major=810 |

| year=2002/major=820 |

+----------------------+--+

使用動態(tài)分區(qū)

然后再創(chuàng)建一個相同表結(jié)構(gòu)的表,準備以動態(tài)分區(qū)的方式導入數(shù)據(jù)。

1

2

3

4CREATE TABLE student_dynamic_partition(id STRING, name STRING)

PARTITIONED BY (year INT, major INT)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ',';

使用動態(tài)分區(qū)前,需要先配置相同的Hive參數(shù),其中最重要的兩個參數(shù)是:

1

2set hive.exec.dynamic.partition=true;

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

更多參數(shù)請參考下文中的參考文檔。

然后以動態(tài)分區(qū)方式導入數(shù)據(jù):

1

2

3INSERT OVERWRITE TABLE student_dynamic_partition PARTITION (year, major)

SELECT id,name,year,major

FROM student_data;

注意:在SELECT子句的各個字段應剛好與INSERT中的字段以及最后的PARTITION中的字段完全一致,包括順序。

這里,我們無需指定數(shù)據(jù)導入到哪一個分區(qū)。該語句會自動創(chuàng)建相應分區(qū),并將數(shù)據(jù)導入相應的分區(qū)。

導入完成后,查看該表的分區(qū)信息:

1

2

3

4

5

6

7

8

9SHOW PARTITIONS student_dynamic_partition

+----------------------+--+

| partition |

+----------------------+--+

| year=2001/major=810 |

| year=2001/major=820 |

| year=2002/major=810 |

| year=2002/major=820 |

+----------------------+--+

兩種方式對比

通過上述實例,我們可以看到:通過動態(tài)分區(qū)方式,我們無法手工指定數(shù)據(jù)導入的具體分區(qū),而是由SELECT中的相關字段的值自行決定導入到哪一個分區(qū)中,并自動創(chuàng)建相應的分區(qū)。使用上更加方便。

參考文檔

總結(jié)

以上是生活随笔為你收集整理的hive分区用2个字段有何限制_[特性]Hive动态分区功能使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。