Hive 動態分割槽插入

2021-10-07 07:54:09 字數 2212 閱讀 7298

使用動態分割槽插入資料時,無需指定分割槽鍵值,系統根據插入的資料,自動分配分割槽。

動態分割槽需注意以下幾點:

需有乙個同構的普通表做為源表;

分割槽鍵值和源表字段之間是根據位置來判斷的,而不是根據命名來匹配的,分割槽鍵值一般對應select後的最後乙個字段;

動態分割槽預設是關閉的,使用前要設定相關引數;

下面是乙個動態分割槽的例子:

# 建立分割槽表和普通表

create

table myhive.student_dynamic_partition

( stu_no int

, stu_name string

) partitioned by

(class_no int

)row format delimited fields

terminated

by' '

;create

table myhive.student

( stu_no int

, stu_name string,

class_no int

)row format delimited fields

terminated

by' '

;# 上傳資料檔案到hdfs

[hadoop@node01 hivedata]$ hdfs dfs -put student.txt /

[hadoop@node01 hivedata]$ hdfs dfs -cat /student.txt

1001 john 1

1002 susan 1

1003 smith 2

1004 tom 2

1005 simen 3

# 普通表匯入資料

hive (myhive)

>

load

data inpath '/student.txt' overwrite into

table student;

hive (myhive)

>

select

*from student;

student.stu_no student.stu_name student.class_no

1001 john 1

1002 susan 1

1003 smith 2

1004 tom 2

1005 simen 3

# 使用動態分割槽插入資料到分割槽表中

hive (myhive)

>

set hive.

exec

.dynamic.

partition

=true

;#開啟動態分割槽

hive (myhive)

>

set hive.

exec

.dynamic.

partition

.mode

=nonstrict;

#動態分割槽模式設定為非嚴格

hive (myhive)

>

set hive.

exec

.max.dynamic.partitions.pernode=

1000

;hive (myhive)

>

insert overwrite table student_dynamic_partition

>

partition

(class_no)

>

select stu_no,stu_name,class_no

>

from student;

hive (myhive)

>

select

*from student_dynamic_partition;

student_dynamic_partition.stu_no student_dynamic_partition.stu_name student_dynamic_partition.class_no

1001 john 1

1002 susan 1

1003 smith 2

1004 tom 2

1005 simen 3

hive使用動態分割槽插入資料詳解

往hive分割槽表中插入資料時,如果需要建立的分割槽很多,比如以表中某個字段進行分割槽儲存,則需要複製貼上修改很多sql去執行,效率低。因為hive是批處理系統,所以hive提供了乙個動態分割槽功能,其可以基於查詢引數的位置去推斷分割槽的名稱,從而建立分割槽。1.建立乙個單一字段分割槽表 creat...

HIVE動態分割槽

一 前段時間因為導表需求 從一張表中查詢出資料,按日期分割槽overwrite 到指定分割槽表中 在hive裡面研究了一下自動分割槽。步驟 1 建好所需分割槽表 2 設定分割槽引數?1 2 3 4 sethive.exec.dynamic.partition true 可通過這個語句檢視 sethi...

Hive動態分割槽

動態分割槽指不需要為不同的分割槽新增不同的插入語句,分割槽不確定,需要從資料中獲取。相關引數設定 set hive.exec dynamic partition true 使用動態分割槽 可通過這個語句檢視 set hive.exec dynamic partition set hive.exec ...