¿Cómo puedo resolver el error «HIVE_METASTORE_ERROR» cuando consulto una tabla en Amazon Athena?

4 minutos de lectura
0

Aparece el error «HIVE_METASTORE_ERROR» cuando consulto mi tabla de Amazon Athena.

Breve descripción

Consulte los siguientes tipos de errores de «HIVE_METASTORE_ERROR» y sus causas:

  • HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: Error: : se espera en la posición 1234 de la estructura<test_column>, pero se encuentra «/». (Servicio: nulo; código de estado: 0; código de error: nulo; ID de solicitud: nulo): El nombre de una columna de la tabla consultada, o el nombre de una columna del esquema de partición, incluye un carácter especial. Athena no admite caracteres especiales aparte del guion bajo. Para obtener más información, consulte Nombres de tablas, bases de datos y columnas.
  • HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: El descriptor de almacenamiento de tablas obligatorio no está rellenado:
    El parámetro StorageDescriptor contiene información sobre el almacenamiento físico de la tabla. Aparece este error si una o más particiones de la tabla no tienen establecida la ubicación de la partición debido a que las particiones están dañadas.
  • HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: java.io.IOException: El tamaño de la carga útil de respuesta (11112222 bytes) superó el tamaño de carga máximo permitido (6291556 bytes): Utiliza una función de AWS Lambda para ejecutar consultas de Athena en un Catálogo de datos de AWS Glue entre cuentas o en un metaalmacén de Hive externo. Sin embargo, Lambda tiene un límite de carga de ejecución de 6 MB. Aparece este error cuando el tamaño del objeto que devuelve Lambda es superior a 6 MB. El límite de carga de Lambda es un límite máximo y no se puede aumentar. Para obtener más información, consulte Cuotas de Lambda.

Resolución

HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: Error: : se espera en la posición 1234 de la estructura<test_column>, pero se encuentra «/». (Servicio: nulo; código de estado: 0; código de error: nulo; ID de solicitud: nulo)

Para resolver este error, siga estos pasos:

  • Para reemplazar el carácter especial del nombre de la columna con un guion bajo, ejecute el siguiente script personalizado con sus datos:
import re
string = open('a.txt').read()
new_str = re.sub('/', '_', string)
open('b.txt', 'w').write(new_str)

HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: El descriptor de almacenamiento de tablas obligatorio no está rellenado

Para resolver este error, elija una o más de las siguientes soluciones:

  • Si la tabla ya está particionada y los datos están cargados en el formato de partición Hive de Amazon Simple Storage Service (Amazon S3), cargue las particiones. Ejecute un comando similar al siguiente ejemplo:
    Nota: Asegúrese de reemplazar doc_example_table por el nombre de su tabla.
MSCK REPAIR TABLE doc_example_table
  • Si el comando MSCK REPAIR TABLE no resuelve el problema, elimine la tabla y cree una tabla nueva con la misma definición. A continuación, ejecute el comando MSCK REPAIR TABLE en la nueva tabla.
  • Cree una carpeta independiente en el bucket de Amazon S3 y mueva los archivos de datos que quiera consultar a esa carpeta. Cree un rastreador de AWS Glue que apunte a esa carpeta en lugar del bucket.

HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: java.io.IOException: El tamaño de la carga útil de respuesta (11112222 bytes) superó el tamaño de carga máximo permitido (6291556 bytes)

Para resolver este error, elija una o más de las siguientes soluciones:

  • Cargue la carga útil de respuesta de la función de Lambda como un objeto en un bucket de Amazon S3. A continuación, incluya este objeto como carga útil en la respuesta de la función de Lambda. Para obtener información sobre cómo generar una URL prefirmada para el objeto, consulte Uso compartido de objetos con URL prefirmadas.
  • Si la tabla está particionada y su caso de uso lo permite, consulte solo la partición específica.
  • Al crear la función de Lambda, especifique la ubicación de desbordamiento en Amazon S3. Las respuestas que superan el umbral se desbordan en la ubicación de S3 especificada.

Información relacionada

Solución de problemas en Athena

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año