tutorial summoners spark pig com2us hadoop hive hiveql

hadoop - summoners - Partición dinámica de colmena



hive dc (2)

Intento crear una tabla particionada usando particiones dinámicas, pero estoy enfrentando un problema. Estoy ejecutando Hive 0.12 en Hortonworks Sandbox 2.0.

set hive.exec.dynamic.partition=true; INSERT OVERWRITE TABLE demo_tab PARTITION (land) SELECT stadt, geograph_breite, id, t.country FROM demo_stg t;

sin embargo, no funciona ... Recibo un error.

Aquí está la consulta para crear la tabla demo_stg :

create table demo_stg ( country STRING, stadt STRING, geograph_breite FLOAT, id INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY "/073";

Y demo_tab :

CREATE TABLE demo_tab ( stadt STRING, geograph_breite FLOAT, id INT ) PARTITIONED BY (land STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY "/073";

  • La tabla demo_stg también está llena de datos, por lo que no está vacía.

Gracias por la ayuda :)


Debes modificar tu selección:

set hive.exec.dynamic.partition=true; INSERT OVERWRITE TABLE demo_tab PARTITION (land) SELECT stadt, geograph_breite, id, t.country FROM demo_stg t;

No estoy seguro de qué columna de la etapa de demostración quiere realizar la partición o qué columna en la demostración corresponde a la tierra. Pero cualquiera que sea la columna, debería estar presente como la última columna en seleccionar, decir que el nombre de la columna de la tabla de demostración es id, por lo que su selección debe escribirse como:

INSERT OVERWRITE TABLE demo_tab PARTITION (land) SELECT stadt, geograph_breite, id, t.country,t.id as land FROM demo_stg t;

Creo que esto debería funcionar.


La columna de partición debe ser la última columna en la consulta de selección.

Y una cosa más aparte de establecer la partición en true, necesita configurar el modo no estricto:

set hive.exec.dynamic.partition.mode=nonstrict