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.

¿Qué causa el error de corrupción de tabla al leer una tabla de cubos de Hive en Trino?

En primer lugar, el formato de los datos no puede ser revelado, pero la tabla de bucket se crea a través de las siguientes declaraciones de creación de tablas y opciones en hive.

  1. Crear DDL

    CREATE EXTERNAL TABLE schema1.ex1(
    col1 string,
    col2 string,
    col3 string,
    col4 string
    )
    PARTITIONED BY(date string)
    CLUSTERED BY (col1) SORTED BY(col2) INTO 32 BUCKETS
    ROW FORMAT SERDE
    ‘org.apache.hadoop.hive.ql.io.orc.OrcSerde’…

  2. Establecer propiedad

    set hive.enforce.bucketing = true;
    set hive.exec.dynamic.partition.mode=nonstrict;
    set hive.exec.max.dynamic.partitions=1000;
    set hive.exec.max.dynamic.partitions.pernode=1000;
    set hive.execution.engine=mr;
    set hive.mapreduce.job.queuename=root.queue1;

  3. Insertar datos (1 mes)

    Insert into table schema1.ex1 partition(date)
    select col1, col2, col3, col4 from schema1.existing_table where date between ‘2021-09-01’ and ‘2021-10-01’

  4. Leer los datos (en trino)

    Luego, al leer la tabla de bucket de hive en trino, obtuve el siguiente error:

    'io.trino.spi.TrinoException: La tabla de Hive está corrupta.
    El archivo hdfs://cluster1/hive/warehouse/schema1/ex1/date=2021-09-02/000026_0 es para el bucket 26, pero contiene una fila para el bucket 9.

    No sé por qué se produjo el error anterior. Agradecería si pudiera decirme la causa del error y la solución.

    Uso hive 3.1.2 y trino-356.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Error al leer la tabla de bucket de Hive en Trino

    El error io.trino.spi.TrinoException: Hive table is corrupt. File 'hdfs://cluster1/hive/warehouse/schema1/ex1/date=2021-09-02/000026_0' is for bucket 26, but contains a row for bucket 9. ocurre cuando uno o más archivos de datos en el directorio de bucket no pertenecen al bucket especificado.

    En el escenario dado, parece que los archivos de datos en el directorio de HDFS, hdfs://cluster1/hive/warehouse/schema1/ex1/date=2021-09-02/, contienen datos para el bucket equivocado. Una posible razón para esto puede ser un número incorrecto de buckets establecido durante la creación de la tabla.

    Para resolver este error, puede intentar los siguientes pasos:

    1. Verifique el número de buckets en la definición de la tabla de Hive y confirme que el número de archivos en cada directorio de partición coincida con el número de buckets especificado. Asegúrese de utilizar el mismo número de buckets tanto en la creación como en la lectura de la tabla.
    2. Verifique si hay alguna inconsistencia entre los metadatos de Hive y los datos reales en el directorio de HDFS. Puede ejecutar el comando MSCK REPAIR TABLE en Hive para sincronizar los metadatos con los datos reales.
    3. Verifique si sus clientes de Hive y Trino están apuntando al mismo clúster de HDFS y si las rutas de datos son consistentes en Hive y Trino.
    4. Verifique los permisos de los directorios de HDFS para confirmar que tanto los usuarios de Hive como los de Trino pueden acceder a ellos.

    Si el problema persiste, puede intentar recrear la tabla con el número correcto de buckets o restaurar la tabla desde una copia de seguridad.

    En conclusión, el error ocurre debido a un mapeo inconsistente entre los datos reales y los metadatos de Hive. Al verificar el número de buckets, ejecutar MSCK REPAIR TABLE y verificar las rutas de datos y permisos, puede resolver el error al leer la tabla de bucket de Hive en Trino.

Comments are closed.