2017-07-02 6 views
1

誤り私は位置パーティションハイブデータ複合データ型のデータを挿入しながら、そのショーは

create table student(
     id bigint 
    ,name string 
    ,location string 
    , course array<string>) 
ROW FORMAT DELIMiTED fields terminated by '\t' 
collection items terminated by ',' 
stored as textfile; 

パーティションを作成
100 student1 ongole java,.net,hadoop 
101 student2 hyderabad .net,hadoop 
102 student3 vizag java,hadoop 
103 student4 ongole .net,hadoop 
104 student5 vizag java,.net 
105 student6 ongole java,.net,hadoop 
106 student7 neollre .net,hadoop 

ようなデータに基づいてデータを分割するハイブを使用してテーブルを作成表:

create table student_partition(
     id bigint 
    ,name string 
    ,course array<string>) 
PARTITIONED BY (address string) 
ROW FORMAT DELIMiTED fields terminated by '\t' 
collection items terminated by ',' 
stored as textfile; 

INSERT OVERWRITE TABLE student_partition PARTITION(address) select * from student;

私は位置に基づいてデータを分割しようとしているが、それは誤り下に示します。

FAILED: SemanticException [Error 10044]: Line 1:23 Cannot insert into target table because column number/types are different 'address': Cannot convert column 2 from string to array.

誰も私を助けてください。ソースとターゲットの

答えて

0

列は


オプション1と一致する必要がターゲットにソースを調整します。パーティション列は、最後の

insert into student_partition partition (address) 
select id,name,course,location 
from student 
; 

オプション2を行く:ソース

insert into student_partition partition (address) (id,name,address,course) 
select * 
from student 
; 

P.S.にターゲットを調整します
必要があります -

set hive.exec.dynamic.partition.mode=nonstrict 
; 
関連する問題