重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
本篇內容主要講解“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表的創建和數據導入方法”有了更深的了解,不妨來實際操作一番吧!這里是創新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!