代码之家  ›  专栏  ›  技术社区  ›  HbnKing

插入到配置单元分区表SemanticException中

  •  1
  • HbnKing  · 技术社区  · 7 年前

    首先,我创建一个配置单元分区表:

    hive> create table partition_table
        > (sid int ,sname string ,age int)            
        > partitioned by (sex string)     
        > row format delimited fields terminated by',';  
    OK
    Time taken: 1.232 seconds
    

     hive> desc partition_table;
        OK
        sid                     int                                         
        sname                   string                                      
        age                     int                                         
        sex                     string                                      
    
    # Partition Information      
    # col_name              data_type               comment             
    
    sex                     string                                      
    Time taken: 0.34 seconds, Fetched: 9 row(s)
    

    hive> insert into table partition_table partition(sex='M')select sno ,sname ,age from student1 where sex ='M';
    FAILED: SemanticException [Error 10006]: Line 1:44 Partition not found ''M''
    

    为了避免这种情况,我编写了以下命令,然后执行insert命令,即使这样,我也会反复出现相同的错误。

    set exec.dynamic.partition=true;                                                                           
    set exec.dynamic.partition.mode=nonstrict;
    
    1 回复  |  直到 6 年前
        1
  •  10
  •   invoketheshell    7 年前

    加载前添加分区:

    ALTER TABLE partition_table ADD PARTITION( sex= 'M' );
    insert into table partition_table partition(sex='M') select sno ,sname ,age from student1 where sex ='M';
    

    或者尝试动态分区:

    set hive.exec.dynamic.partition=true;
    INSERT OVERWRITE TABLE partition_table PARTITION (sex)
    SELECT sid, sname, age, sex
    FROM student1;