Completar columna de datos vacía en Hive a través de los datos de otra tabla
Publicado por María de Alejandría (1 intervención) el 14/01/2021 16:20:07
Saludos
Formulo la presente cuestión en este apartado, puesto que no he visto ninguno relacionado con Hive y/o Cloudera.
Estoy trabajando con Hive en Cloudera Manager. Cuento con las siguientes tablas de datos asociadas a vuelos:
Tabla de mensajes: En ella se encuentran mensajes asociados al estado de los vuelos varios puntos. Cada vuelo cuenta con varios mensajes. Sus atributos son: id (identificador del mensaje), aid (identificador de la aeronave), descripcion y mtemp(marca temporal relacionada con la fecha y hora del envío).
Por otra parte tengo una tabla de vuelos en la que se recoge el identificador del vuelo y el de aeronave como en el caso anterior, además de dos campos relacionados con las horas de partida y llegada de cada vuelo ,respectivamente.
Los datos de estas últimas columnas son desconocidos y es necesario obtenerlos agrupando los mensajes en función del identificador del vuelo y de la aeronave seleccionando el valor mínimo de las marcas temporales en cada grupo para obtener las horas y fechas de salida y el valor máximo para las fechas y horas de llegada correspondientes.
A través de la siguiente consulta pensaba crear una tabla con dos columnas que pudiesen contener los valores deseados (es necesario expresar en formato de fecha y hora las marcas temporales):
Después de ejecutar esa consulta pensaba crear una tabla en la que se combinasen las columnas obtenidas con las de la tabla de mensajes (incluyendo las columnas con los nuevos resultados en lugar de las vacías de las que se partía) a través de una consulta que incluyese un join. El problema es que no logro que la consulta para crear la primera tabla me funcione y no consigo encontrar el error.
Gracias de antemano por las respuestas.
Formulo la presente cuestión en este apartado, puesto que no he visto ninguno relacionado con Hive y/o Cloudera.
Estoy trabajando con Hive en Cloudera Manager. Cuento con las siguientes tablas de datos asociadas a vuelos:
Tabla de mensajes: En ella se encuentran mensajes asociados al estado de los vuelos varios puntos. Cada vuelo cuenta con varios mensajes. Sus atributos son: id (identificador del mensaje), aid (identificador de la aeronave), descripcion y mtemp(marca temporal relacionada con la fecha y hora del envío).
Por otra parte tengo una tabla de vuelos en la que se recoge el identificador del vuelo y el de aeronave como en el caso anterior, además de dos campos relacionados con las horas de partida y llegada de cada vuelo ,respectivamente.
Los datos de estas últimas columnas son desconocidos y es necesario obtenerlos agrupando los mensajes en función del identificador del vuelo y de la aeronave seleccionando el valor mínimo de las marcas temporales en cada grupo para obtener las horas y fechas de salida y el valor máximo para las fechas y horas de llegada correspondientes.
A través de la siguiente consulta pensaba crear una tabla con dos columnas que pudiesen contener los valores deseados (es necesario expresar en formato de fecha y hora las marcas temporales):
1
2
3
4
5
6
insert overwrite table fechashoras PARTITION (aid)
select UNIX_TIMESTAMP(max(mtemp)), UNIX_TIMESTAMP(min(mtemp))
from
datos.mensajes
group by
aid,id
Después de ejecutar esa consulta pensaba crear una tabla en la que se combinasen las columnas obtenidas con las de la tabla de mensajes (incluyendo las columnas con los nuevos resultados en lugar de las vacías de las que se partía) a través de una consulta que incluyese un join. El problema es que no logro que la consulta para crear la primera tabla me funcione y no consigo encontrar el error.
Gracias de antemano por las respuestas.
Valora esta pregunta


0