ODPS輸出到動態分割槽(DYNAMIC PARTITION)
在INSERT OVERWRITE到一張分割槽表時,可以在語句中指定分割槽的值。也可以用另外一種更加靈活的方式,在分割槽中指定一個分割槽列名,但不給出值。
相應的,在SELECT子句中的對應列來提供分割槽的值。
語法格式:
INSERT OVERWRITE TABLE tablename PARTITION (partcol1, partcol2 ...)
select_statement FROM from_statement;
備註:
? 目前,在使用動態分割槽功能的SQL中,在分散式環境下,單個程式最多隻能輸出512個動態分割槽,否則引發執行時異常;
? 在現階段,任意動態分割槽SQL不可以生成超過2000個動態分割槽,否則引發執行時異常;
? 動態生成的分割槽值不可以為NULL,否則會引發異常;
? 如果目標表有多級分割槽,在執行INSERT語句時允許指定部分分割槽為靜態,但是靜態分割槽必須是高階分割槽;
CREATE TABLE total_revenues (revenue BIGINT)
PARTITIONED BY (region STRING);
INSERT OVERWRITE TABLE total_revenues PARTITION(region)
SELECT total_price as revenue, region
FROM sale_detail;
按照這種寫法,在SQL執行之前,是不知道會產生哪些分割槽的,只有在SELECT執行結束後,才能由region欄位產生的值確定會產生哪些分割槽,這也是為什麼叫做”動態分割槽”的原因。
CREATE TABLE sale_detail_dypart LIKE sale_detail;
INSERT OVERWRITE TABLE sale_detail_dypart PARTITION (sale_date, region)
SELECT * FROM sale_detail;
-- 成功返回
INSERT OVERWRITE TABLE sale_detail_dypart PARTITION (sale_date='2013', region)
SELECT shop_name,customer_id,total_price,region FROM sale_detail;
-- 成功返回,多級分割槽,指定一級分割槽
INSERT OVERWRITE TABLE sales PARTITION (region='china', sale_date)
SELECT shop_name,customer_id,total_price,region FROM sale_detail;
-- 失敗返回,不能僅指定低階子分割槽,而動態插入高階分割槽
相應的,在SELECT子句中的對應列來提供分割槽的值。
語法格式:
INSERT OVERWRITE TABLE tablename PARTITION (partcol1, partcol2 ...)
select_statement FROM from_statement;
備註:
? 目前,在使用動態分割槽功能的SQL中,在分散式環境下,單個程式最多隻能輸出512個動態分割槽,否則引發執行時異常;
? 在現階段,任意動態分割槽SQL不可以生成超過2000個動態分割槽,否則引發執行時異常;
? 動態生成的分割槽值不可以為NULL,否則會引發異常;
? 如果目標表有多級分割槽,在執行INSERT語句時允許指定部分分割槽為靜態,但是靜態分割槽必須是高階分割槽;
CREATE TABLE total_revenues (revenue BIGINT)
PARTITIONED BY (region STRING);
INSERT OVERWRITE TABLE total_revenues PARTITION(region)
SELECT total_price as revenue, region
FROM sale_detail;
按照這種寫法,在SQL執行之前,是不知道會產生哪些分割槽的,只有在SELECT執行結束後,才能由region欄位產生的值確定會產生哪些分割槽,這也是為什麼叫做”動態分割槽”的原因。
CREATE TABLE sale_detail_dypart LIKE sale_detail;
INSERT OVERWRITE TABLE sale_detail_dypart PARTITION (sale_date, region)
SELECT * FROM sale_detail;
-- 成功返回
INSERT OVERWRITE TABLE sale_detail_dypart PARTITION (sale_date='2013', region)
SELECT shop_name,customer_id,total_price,region FROM sale_detail;
-- 成功返回,多級分割槽,指定一級分割槽
INSERT OVERWRITE TABLE sales PARTITION (region='china', sale_date)
SELECT shop_name,customer_id,total_price,region FROM sale_detail;
-- 失敗返回,不能僅指定低階子分割槽,而動態插入高階分割槽
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26613085/viewspace-1327474/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【實驗】【PARTITION】RANGE分割槽表移動表分割槽(Move Partition)
- 分割槽Partition
- oracle分割槽partition及分割槽索引partition index(一)Oracle索引Index
- 【實驗】【PARTITION】RANGE分割槽表截斷表分割槽(Truncate Partition)
- 分割槽表PARTITION table
- Hive的靜態分割槽與動態分割槽Hive
- ORACLE 範圍分割槽 partition-range分割槽Oracle
- oracle分割槽及分割槽索引partition_partition index_維護(一)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(二)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(三)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(四)Oracle索引Index
- 【實驗】【PARTITION】RANGE分割槽表重新命名錶分割槽(Rename Partition)
- Hive動態分割槽Hive
- MySQL 分割槽表 partition線上修改分割槽欄位MySql
- 【實驗】【PARTITION】RANGE分割槽表合併分割槽
- 【實驗】【PARTITION】RANGE分割槽表增加分割槽
- 【實驗】【PARTITION】RANGE分割槽表刪除分割槽
- 分割槽partition知識點
- MySQL分割槽(Partition)詳解MySql
- Oracle 分割槽(partition)技術Oracle
- Oracle分割槽表(Partition Table)Oracle
- 分割槽剪除 (partition pruning)
- 分割槽表PARTITION table(轉)
- 融合(merge partition)分割槽
- 合併分割槽(coalesce partition)
- Oracle Interval Partition 自動分割槽表-實驗Oracle
- Hive中靜態分割槽和動態分割槽總結Hive
- oracle分割槽及分割槽索引partition_partition index_維護(五)_快捷方法Oracle索引Index
- oracle partition分割槽_分割槽列為空測試(一)Oracle
- partition 分割槽表移動到其他表空間
- Spark學習——分割槽Partition數Spark
- oracle reference partition引用分割槽(一)Oracle
- 深入解析partition-range分割槽
- 深入解析partition-hash分割槽
- 深入解析partition-list 分割槽
- oracle list partition列表分割槽(一)Oracle
- 【實驗】【PARTITION】RANGE分割槽建立
- partition 分割槽表重新命名