您好,登錄后才能下訂單哦!
本篇內容主要講解“hive 分區partition表的創建和數據導入方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“hive 分區partition表的創建和數據導入方法”吧!
分區創建與數據導入的步驟:
1.創建分區表(以外部分區表為例)
create external table if not exists dividends(
ymd string,
dividend string)
partitioned by (ex_change string,symbol string)
row format delimited fields terminated by ',';
2.創建還有分區表字段與分區字段的內部表(管理表)
內部表的字段應該包含紅色字段,建表略
3.將數據導入2中創建的表。load data……
4.通過內部表靜態或者動態將數據插入分區表
非常重要的動態分區屬性:
hive.exec.dynamic.partition 是否啟動動態分區。false(不開啟) true(開啟)默認是 false
hive.exec.dynamic.partition.mode 打開動態分區后,動態分區的模式,有 strict和 nonstrict 兩個值可選,strict 要求至少包含一個靜態分區列,nonstrict則無此要求。各自的好處,大家自己查看哈。
hive.exec.max.dynamic.partitions 允許的最大的動態分區的個數。可以手動增加分區。默認1000
hive.exec.max.dynamic.partitions.pernode 一個 mapreduce job所允許的最大的動態分區的個數。默認是100
在進行動態分區插入時,經常會因為這些配置參數的值報錯,所以習慣查看日志明確錯誤。我遇到的報錯信息:
Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: Fatal error occurred when node tried to create too many dynamic partitions. The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. Maximum was set to: 100
表名由于分區數量超值,所以通過修改參數值就能夠避免這樣的錯誤了。
1)靜態插入數據
注意:方框中的字段位置以及個數一定要與分區表(dividends)的字段位置以及個數相符合,否則會報出類似如下的錯誤
FAILED: SemanticException [Error 10044]: Line 1:23 Cannot insert into target table because column number/types are different 'symbol': Table insclause-0 has 3 columns, but query has 4 columns.
從上面錯誤提示看出,查詢的表有4列,而目標表格(也就是需要插入數據的表格)有3列,由于列的數目不一樣,導致了上面的語句不能成功運行,所以我們需要保證查詢結果列的數目和需要插入數據表格的列數目一致。
2)動靜態混合分區插入
截圖有錯誤信息,相信大家知道這是什么原因了吧!!!
一定要注意動態分區參數值以及1)的注意事項
3)動態分區插入
截圖中的報錯!!是配置參數值問題哦!
到此,相信大家對“hive 分區partition表的創建和數據導入方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。