[英]into Hive table - Non Partitioned table to Partitioned table having multiple partitions - Cannot insert into target table because column number/types
當我嘗試插入分區表時,出現以下錯誤:
SemanticException [錯誤 10044]:第 1:23 行無法插入目標表,因為列號/類型不同:表 insclause-0 有 6 列,3 列已分區,我們不需要任何必須從中轉儲/存儲的過濾器非分區表到分區表。
我的桌子:
資源:
id name salary dep
1 sai 1000 sales
2 syam 2000 hr
3 sundar 3000 bank
目標:
id name salary dep
1 sai 1000 sales
2 syam 2000 hr
3 sundar 3000 bank
分區(名稱字符串,dep 字符串)
請讓我如何從源復制到目標
嘗試以下方式。
insert into target_partitioned_table partition(name,dep) select id from source_table;
您應該列出 select 中的所有列,分區列應該是最后一個並且順序相同。 列的順序很重要。
檢查表 DDL。 如果按 Name 和 Dep 分區,則分區列應該是最后一個: id, salary, name, dep
。 如果列的順序與您的問題中的一樣,則該表看起來不像按(名稱,Dep)分區,或者文件或數據示例中的列順序錯誤。 以 DESCRIBE 命令返回的相同順序插入列。
查詢應以完全相同的順序包含所有列。
對於 static 分區加載,您不需要 select 中的分區列,分區規范中的值為 static:
insert into table target_partitioned_table partition(name='Some Name',dep='Sales')
select id, salary from source_table;
對於動態分區加載(分區取自數據集,並且應該在 select 中以相同的順序):
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert into table target_partitioned_table partition(name,dep)
select id, salary, name, dep from source_table;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.