Hive 動態分割槽筆記

2021-10-07 22:51:55 字數 1581 閱讀 8196

分割槽型別主要用於根據select查詢字段內容,動態分配至對應分區內。

-- 以pt為分割槽的表

create

table test(

col string)

partitioned by

(pt_1 string,

pt_2 string)

;-- 根據col_2欄位內容分發到指定的分區內

insert

into

table test partition

(pt_1=

"a",pt_2)

select col_1, col_2 as pt_2 from test_1;

注:上例中,使用半動態分割槽的方式,pt_1使用靜態分割槽,pt_2分割槽使用動態分割槽。

set hive.

exec

.dynamici.

partition

=true

set hive.

exec

.dynamici.

partition

.mode

=strict -- 半動態分割槽

set hive.

exec

.dynamici.

partition

.mode

=nonstrict -- 全動態分割槽

set hive.

exec

.max.dynamic.partitions =

1000

-- 最大的動態分割槽個數,預設1000

insert

into

table test partition

(pt_1=

"a",pt_2)

select ……

問題1:靜態分割槽不需要佔位列,列數異常

根據查詢結果插入動態分割槽表時候,出現以下異常資訊,是因為查詢的列數目大於目標表的列數目;

靜態分割槽名已確定,不能作為佔位符。

樣例:

insert

into

table test partition

(pt_1=

"a",pt_2)

select col_1, col_1 as pt_1 ,col_2 as pt_2 from test_1;

由於pt_1分割槽已固定,所以上述設定會出現異常列數量異常。

異常資訊:

failed: semanticexception [error 10044

]: line 1:23 cannot insert

into target table because column number/

types are different 『province』: table insclause-

0 has 5

columns

, but query has 6

columns

.

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 ...

hive動態分割槽

不需要為不同的分割槽新增不同的插入語句 分割槽不確定,需要從資料中獲取 幾個引數 set hive.exec dynamic partition true 使用動態分割槽 set hive.exec dynamic partition mode nonstrick 無限制模式,如果模式是strict...