Primero creo una colmena tabla con particiones:

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

La tabla desc es la siguiente:

 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)

y, a continuación, insertar algunos datos en esta tabla, pero no funciona.

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''

Para evitar esto escribí el comando siguiente y, a continuación, ejecuta mi comando insert, incluso entonces me sale el mismo error varias veces.

set exec.dynamic.partition=true;                                                                           
set exec.dynamic.partition.mode=nonstrict;

Por favor me guía. Gracias de antemano

puede agregar select sno ,sname ,age from student1 where sex ='M' salida a la pregunta. no hay ningún problema con consulta.
por supuesto .. hace la partición de la columna debe ser el inglés

OriginalEl autor HbnKing | 2017-07-27

1 Comentario

  1. 3

    agregar la partición antes de la carga:

    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';
    

    o tratar de partición dinámica:

    set hive.exec.dynamic.partition=true;
    INSERT OVERWRITE TABLE partition_table PARTITION (sex)
    SELECT sid, sname, age, sex
    FROM student1;
    
    la adición de partición es innecesario . Consulta lo hace automáticamente.
    Usted puede ver su error dice que no encuentra la partición ‘M’. En mi segunda solución se puede ver que recomienda la partición dinámica. ¿Dejar de leer en la línea de cuatro?
    su respuesta es muy útil, pero cuando trato de ` ALTER TABLE partition_table AÑADIR PARTICIÓN( sexo= ‘xxx’ ); ` — causó un nuevo error FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.) pero yo ya la hive-site.xml < propiedad> < nombre>javax.jdo.opción.ConnectionURL< /name> < valor>jdbc:mysql://djt01:3306/colmena?characterEncoding=UTF-8< /valor> < descripción>JDBC cadena de conexión para un JDBC metastore< /descripción> < />
    La búsqueda de este error podría ser un problema de ajuste de carácter
    Pruebe con un show de particiones, y ver si ya se ha hecho

    OriginalEl autor invoketheshell

Dejar respuesta

Please enter your comment!
Please enter your name here