es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cambiar el tipo de datos de una tabla externa de Hive de Double a Decimal.

Estoy tratando de cambiar varios columnas en una tabla externa de HIVE de double a decimal. He eliminado, recreado la tabla, y ejecutado la instrucción msck repair. Sin embargo, no puedo seleccionar la tabla ni desde Hive ni desde Impala, ya que devuelve estos errores:


Hive: ERROR procesando la consulta/instrucción. Código de error: 0, Estado SQL: El archivo 'hdfs://ns-bigdata/user/warehouse/fact/TEST_FACT/key=2458773/000000_0' tiene un esquema Parquet incompatible con la columna 'testing.fact_table.tot_amt'. Tipo de columna: DECIMAL(28,7), Esquema Parquet:
opcional double tot_amt [i:29 d:1 r:0]


Impala: ERROR procesando la consulta/instrucción. Código de error: 0, Estado SQL: El archivo 'hdfs://ns-bigdata/user/warehouse/fact/TEST_FACT/key=2458773/000000_0' tiene un esquema Parquet incompatible con la columna 'testing.fact_table.tot_amt'. Tipo de columna: DECIMAL(28,7), Esquema Parquet:
opcional double tot_amt [i:29 d:1 r:0]

¿Es posible cambiar el tipo de dato de double a decimal?
Además, ¿cuál es la diferencia entre eliminar+recrear la tabla y modificar la tabla?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Sí, es posible cambiar el tipo de dato de double a decimal.

    Para alterar el tipo de dato de double a decimal, puedes utilizar la sentencia ALTER TABLE en Hive. Aquí tienes la sintaxis:

    ALTER TABLE nombre_tabla CHANGE nombre_columna nombre_columna tipo_dato;
    

    Por ejemplo, si quieres cambiar el tipo de dato de la columna tot_amt de double a decimal(28,7), puedes ejecutar el siguiente comando:

    ALTER TABLE testing.fact_table CHANGE tot_amt tot_amt DECIMAL(28, 7);
    

    Después de cambiar el tipo de dato, debes asegurarte de que el esquema de tu tabla sea compatible con el archivo almacenado en HDFS.

    En cuanto a la diferencia entre eliminar y volver a crear la tabla y alterar la tabla:

    • Eliminar y volver a crear la tabla eliminará todos los datos de la tabla, y deberás volver a cargar los datos. Este enfoque es útil cuando quieres cambiar significativamente la estructura de la tabla.
    • Alterar la tabla modificará el esquema de la tabla sin eliminar los datos. Este enfoque es útil cuando quieres hacer cambios menores en la estructura de la tabla, como cambiar el tipo de dato de una columna.

Comments are closed.