簡體   English   中英

進入 Hive 表 - 非分區表到具有多個分區的分區表 - 由於列號/類型,無法插入目標表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM