Solución de problemas en Athena - Amazon Athena

Solución de problemas en Athena

El equipo de Athena ha recopilado la siguiente información de solución de problemas de clientes. Si bien no es exhaustiva, incluye recomendaciones sobre algunos problemas comunes de rendimiento, tiempo de espera y falta de memoria.

CREATE TABLE AS SELECT (CTAS)

Los datos duplicados se producen con instrucciones CTAS simultáneas

Athena no mantiene la validación simultánea para CTAS. Asegúrese de que no haya una instrucción CTAS duplicada para la misma ubicación al mismo tiempo. Incluso si una instrucción CTAS o INSERT INTO falla, los datos huérfanos se pueden dejar en la ubicación de datos especificada en la instrucción.

HIVE_TOO_MANY_OPEN_PARTITIONS

Cuando utiliza una instrucción CTAS para crear una tabla con más de 100 particiones, es posible que reciba el error HIVE_TOO_MANY_OPEN_PARTITIONS: Exceeded limit of 100 open writers for partitions/buckets (HIVE_TOO_MANY_OPEN_PARTITIONS: Se ha superado el límite de 100 autores abiertos para particiones/buckets). Para evitar esta limitación, puede utilizar una instrucción CTAS y una serie de instrucciones INSERT INTO que crean o insertan hasta 100 particiones cada una. Para obtener más información, consulte Uso de CTAS e INSERT INTO para evitar el límite de 100 particiones.

Problemas de archivos de datos

Athena no puede leer archivos ocultos

Athena trata los archivos de origen que comienzan con un guion bajo (_) o un punto (.) como ocultos. Para evitar esta limitación, cambie el nombre de los archivos.

Athena lee los archivos que excluí del rastreador de AWS Glue

Athena no reconoce los patrones de exclusión que especifica en un rastreador de AWS Glue. Por ejemplo, si tiene un bucket de Amazon S3 que contiene tanto .csv como .json y se excluyen los archivos .json desde el rastreador, Athena consulta ambos grupos de archivos. Para evitar esto, coloque los archivos que desea excluir en una ubicación diferente.

HIVE_BAD_DATA: Error parsing field value

Este problema se puede producir en el siguiente escenario:

HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://amzn-s3-demo-bucket

Este error se puede producir cuando se consulta un prefijo de bucket de Amazon S3 que tiene un gran número de objetos. Para más información, consulte ¿Cómo soluciono el error “HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://amzn-s3-demo-bucket/: Slow down” en Athena? en el Centro de conocimientos de AWS.

HIVE_CURSOR_ERROR: com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist

Este error se suele producir cuando se elimina un archivo cuando se está ejecutando una consulta. Vuelva a ejecutar la consulta o verifique el flujo de trabajo para ver si otro trabajo o proceso está modificando los archivos cuando se está ejecutando la consulta.

HIVE_CURSOR_ERROR: Unexpected end of input stream

Este mensaje indica que el archivo está dañado o vacío. Verifique la integridad del archivo y vuelva a ejecutar la consulta.

HIVE_FILESYSTEM_ERROR: Incorrect fileSize 1234567 for file

Este mensaje puede aparecer cuando un archivo ha cambiado entre la planificación y la ejecución de consultas. Normalmente se produce cuando un archivo de Amazon S3 se reemplaza in situ (por ejemplo, un PUT se realiza en una clave en la que ya existe un objeto). Athena no admite eliminar o reemplazar el contenido de un archivo en el momento de ejecución de una consulta. Para evitar este error, programe trabajos que sobrescriban o eliminen archivos en momentos en que las consultas no se ejecutan, o solo escriben datos en nuevos archivos o particiones.

HIVE_UNKNOWN_ERROR: Unable to create input format

Este error puede ser el resultado de problemas como los que se enumeran a continuación:

  • El rastreador de AWS Glue no pudo clasificar el formato de datos

  • Ciertas propiedades de definición de tablas de AWS Glue están vacías

  • Athena no admite el formato de datos de los archivos de Amazon S3

Para obtener más información, consulte ¿Cómo resuelvo el error “unable to create input format” en Athena? en el Centro de Conocimientos de AWS o vea el video del Centro de conocimientos.

La ubicación de S3 proporcionada para guardar los resultados de la consulta no es válida.

Asegúrese de que ha especificado una ubicación de S3 válida para los resultados de la consulta. Para obtener más información, consulte Especificación de una ubicación de resultados de consulta en el tema Trabajo con resultados de la consulta y consultas recientes.

Tablas de Linux Foundation Delta Lake

El esquema de la tabla de Delta Lake no está sincronizado

Cuando se consulta una tabla de Delta Lake que tiene un esquema en AWS Glue desactualizado, se puede recibir el siguiente mensaje de error:

INVALID_GLUE_SCHEMA: Delta Lake table schema in Glue does not match the most recent schema of the Delta Lake transaction log. Please ensure that you have the correct schema defined in Glue.

El esquema puede quedar desactualizado si se modifica AWS Glue después de añadirlo a Athena. Para actualizar el esquema, siga uno de los pasos a continuación:

Consultas federadas

Se agotó el tiempo de espera al llamar a ListTableMetadata

El tiempo de espera de una llamada a la API ListTableMetadata puede agotarse si hay muchas tablas en el origen de datos, si el origen de datos es lento, o si la red es lenta. Para solucionar este problema, siga estos pasos.

  • Comprobar la cantidad de tablas: si tiene más de 1000 tablas, intente reducir el número. Para obtener la respuesta ListTableMetadata más rápida, recomendamos tener menos de 1000 tablas por catálogo.

  • Comprobar la configuración de Lambda: la supervisión del comportamiento de la función de Lambda es fundamental. Cuando utilice catálogos federados, asegúrese de examinar los registros de ejecución de la función de Lambda. En función de los resultados, ajuste los valores de memoria y tiempo de espera en consecuencia. Para identificar cualquier posible problema relacionado con los tiempos de espera, revisite su configuración de Lambda. Para obtener más información, consulte Configuración del tiempo de espera de la función (consola) en la Guía para desarrolladores de AWS Lambda.

  • Comprobar los registros de los orígenes de datos federados: examine los registros y los mensajes de error del origen de datos federado para ver si hay algún problema o error. Los registros pueden proporcionar información valiosa sobre la causa del tiempo de espera.

  • Utilice StartQueryExecution para recuperar metadatos: si tiene más de 1000 tablas, recuperar los metadatos con el conector federado puede tardar más de lo esperado. Dado que la naturaleza asíncrona de StartQueryExecution garantiza que Athena ejecute la consulta de la forma más óptima, considere utilizar StartQueryExecution como alternativa a ListTableMetadata. Los siguientes ejemplos de AWS CLI muestran cómo se puede utilizar StartQueryExecution en lugar de ListTableMetadata para obtener todos los metadatos de las tablas del catálogo de datos.

    En primer lugar, ejecute una consulta que obtenga todas las tablas, como en el ejemplo siguiente.

    aws athena start-query-execution --region us-east-1 \ --query-string "SELECT table_name FROM information_schema.tables LIMIT 50" \ --work-group "your-work-group-name"

    A continuación, recupere los metadatos de una tabla individual, como en el siguiente ejemplo.

    aws athena start-query-execution --region us-east-1 \ --query-string "SELECT * FROM information_schema.columns \ WHERE table_name = 'your-table-name' AND \ table_catalog = 'your-catalog-name'" \ --work-group "your-work-group-name"

    El tiempo necesario para obtener los resultados depende del número de tablas del catálogo.

Para obtener más información sobre cómo solucionar problemas relacionados con las consultas federadas, consulte Common_Problems en la sección awslabs/aws-athena-query-federation de GitHub o la documentación sobre los conectores de orígenes de datos de Athena individuales.

Errores de datos NULL o incorrectos al intentar leer datos JSON

Los errores de datos NULL o incorrectos al intentar leer datos JSON pueden deberse a una serie de causas. Para identificar las líneas que están generando errores al utilizar OpenX SerDe, establezca ignore.malformed.json en true. Los registros con formato incorrecto se devolverán como NULL. Para obtener más información, consulte Recibo errores cuando intento leer datos JSON en Amazon Athena en el Centro de conocimientos de AWS o vea el video del Centro de conocimientos.

HIVE_BAD_DATA: Error parsing field value for field 0: java.lang.String cannot be cast to org.openx.data.jsonserde.json.JSONObject

El SerDe JSON de OpenX arroja este error cuando no puede analizar una columna en una consulta de Athena. Esto puede suceder si define una columna como map o struct, pero los datos subyacentes son en realidad string, int u otro tipo primitivo.

HIVE_CURSOR_ERROR: Row is not a valid JSON object - JSONException: Duplicate key (HIVE_CURSOR_ERROR: la fila no es un objeto JSON válido - JSONException: clave duplicada)

Este error se produce cuando utiliza Athena para consultar recursos AWS Config que tienen varias etiquetas con el mismo nombre en diferentes casos. La solución consiste en ejecutar CREATE TABLE con WITH SERDEPROPERTIES 'case.insensitive'='false' y asignar los nombres. Para obtener más información acerca de case.insensitive y el mapeo, consulte Bibliotecas de SerDe JSON. Para obtener más información, consulte ¿Cómo resuelvo el error “HIVE_CURSOR_ERROR: Row is not a valid JSON object - JSONException: Duplicate key” (HIVE_CURSOR_ERROR: la fila no es un objeto JSON válido - JSONException: clave duplicada) al leer archivos de AWS Config en Athena? en el centro de conocimientos de AWS.

Mensajes HIVE_CURSOR_ERROR con formato de impresión JSON

Las bibliotecas El SerDe JSON de Hive y El SerDe JSON de OpenX esperan que cada documento JSON esté en una sola línea de texto sin caracteres de terminación de línea que separen los campos del registro. Si el texto JSON está en formato de impresión, puede recibir un mensaje de error como HIVE_CURSOR_ERROR: Row is not a valid JSON Object (HIVE_CURSOR_ERROR: la fila no es un objeto JSON válido) o HIVE_CURSOR_ERROR: JsonParseException: Unexpected end-of-input: expected close marker for OBJECT (HIVE_CURSOR_ERROR: JsonParseException: fin de entrada inesperado: marcador de cierre esperado para OBJECT) cuando intenta consultar la tabla después de crearla. Para obtener más información, consulte Archivos de datos JSON en la documentación de OpenX SerDe en GitHub.

Varios registros JSON devuelven un SELECT COUNT de 1

Si utiliza El SerDe JSON de OpenX, asegúrese de que los registros estén separados por un carácter de nueva línea. Para obtener más información, consulte La consulta SELECT COUNT en Amazon Athena devuelve solo un registro aunque el archivo JSON de entrada tenga varios registros en el Centro de conocimientos de AWS.

No se puede consultar una tabla creada por un rastreador de AWS Glue que utiliza un clasificador JSON personalizado

El motor Athena no es compatible con clasificadores JSON personalizados. Para evitar este problema, cree una tabla nueva sin el clasificador personalizado. Para transformar el JSON, puede utilizar CTAS o crear una vista. Por ejemplo, si está trabajando con matrices, puede utilizar la opción UNNEST para aplanar el JSON. Otra opción consiste en utilizar un trabajo ETL de AWS Glue que admita el clasificador personalizado, convertir los datos a Parquet en Amazon S3 y, a continuación, consultarlo en Athena.

MSCK REPAIR TABLE

Para obtener información acerca de los problemas relacionados con MSCK REPAIR TABLE, consulte las secciones Consideraciones y limitaciones y Resolución de problemas de la página MSCK REPAIR TABLE.

Problemas de salida

No se puede verificar/crear el bucket de salida

Este error se puede producir si la ubicación del resultado de la consulta especificada no existe o si los permisos adecuados no están presentes. Para obtener más información, consulte ¿Cómo resuelvo el error “No se puede verificar/crear el bucket de salida” en Amazon Athena? en el Centro de conocimientos de AWS.

El resultado TIMESTAMP está vacío

Athena requiere el formato TIMESTAMP de Java. Para obtener más información, consulte Cuando consulto una tabla en Amazon Athena, el resultado TIMESTAMP está vacío en el Centro de conocimientos de AWS.

Almacenar la salida de la consulta de Athena en un formato distinto de CSV

De forma predeterminada, Athena genera archivos únicamente en formato CSV. Para generar los resultados de una consulta SELECT en un formato diferente, puede utilizar la instrucción UNLOAD. Para obtener más información, consulte UNLOAD. También puede utilizar una consulta de CTAS que use la propiedad de la tabla format para configurar el formato de salida. A diferencia de UNLOAD, la técnica de CTAS requiere la creación de una tabla. Para obtener más información, consulte ¿Cómo puedo almacenar una salida de consulta Athena en un formato distinto a CSV, como un formato comprimido? en el Centro de conocimientos de AWS.

La ubicación de S3 proporcionada para guardar los resultados de la consulta no es válida

Es posible que reciba este mensaje de error si la ubicación del bucket de salida no está en la misma región que la región en la que ejecuta la consulta. Para evitar esto, especifique una ubicación de resultados de consulta en la región en la que ejecuta la consulta. Para ver los pasos, consulte Especificación de una ubicación de resultados de consulta.

Problemas de Parquet

org.apache.parquet.io.GroupColumnIO cannot be cast to org.apache.parquet.io.PrimitiveColumnIO

Este error se debe a una falta de coincidencia de esquema de Parquet. Una columna que tiene un tipo no primitivo (por ejemplo, array) se ha declarado como un tipo primitivo (por ejemplo, string) en AWS Glue. Para solucionar este problema, verifique el esquema de datos en los archivos y compárelo con el esquema declarado en AWS Glue.

Problemas con las estadísticas de Parquet

Al leer los datos de Parquet, es posible que reciba mensajes de error como los siguientes:

HIVE_CANNOT_OPEN_SPLIT: Index x out of bounds for length y HIVE_CURSOR_ERROR: Failed to read x bytes HIVE_CURSOR_ERROR: FailureException at Malformed input: offset=x HIVE_CURSOR_ERROR: FailureException at java.io.IOException: can not read class org.apache.parquet.format.PageHeader: Socket is closed by peer.

Para solucionar este problema, utilice la instrucción ALTER TABLE SET TBLPROPERTIES o CREATE TABLE para establecer la propiedad parquet.ignore.statistics de Parquet SerDe en true, como en los siguientes ejemplos.

Ejemplo de CREATE TABLE

... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...

Ejemplo de ALTER TABLE

ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')

Para obtener más información sobre Parquet Hive SerDe, consulte El SerDe de Parquet.

Problemas de particiones

MSCK REPAIR TABLE no elimina las particiones obsoletas

Si elimina una partición de forma manual en Amazon S3 y, a continuación, ejecuta MSCK REPAIR TABLE, puede recibir el mensaje de error Partitions missing from filesystem (Faltan particiones en el sistema de archivos). Esto sucede porque MSCK REPAIR TABLE no elimina particiones obsoletas de los metadatos de la tabla. Utilice ALTER TABLE DROP PARTITION para eliminar las particiones obsoletas de forma manual. Para obtener más información, consulte la sección “Solución de problemas” del tema MSCK REPAIR TABLE.

Error MSCK REPAIR TABLE

Cuando una gran cantidad de particiones (por ejemplo, más de 100 000) están asociadas a una tabla determinada, MSCK REPAIR TABLE puede fallar debido a limitaciones de la memoria. Para evitar este límite, utilice ALTER TABLE ADD PARTITION en su lugar.

MSCK REPAIR TABLE detecta particiones pero no las agrega a AWS Glue

Este problema se puede producir si una ruta de Amazon S3 tiene una combinación de mayúsculas y minúsculas en lugar de minúsculas o si una política de IAM no permite la acción glue:BatchCreatePartition. Para obtener más información, consulte MSCK REPAIR TABLE detecta particiones en Athena pero no las agrega a AWS Glue Data Catalog en el Centro de conocimientos de AWS.

Los intervalos de proyección de particiones con el formato de fecha de dd-MM-yyyy-HH-mm-ss o yyyy-MM-dd no funcionan

Para que funcione correctamente, se debe establecer el formato de fecha enyyyy-MM-dd HH:00:00. Para obtener más información, consulte la publicación de Stack Overflow Athena partition projection not working as expected (La proyección de particiones de Athena no funciona de la manera esperada).

PARTITION BY no admite el tipo BIGINT

Convierta el tipo de datos a string y vuelva a intentarlo.

No hay particiones significativas disponibles

Por lo general, este mensaje de error significa que la configuración de la partición está dañada. Para resolver este problema, elimine la tabla y cree una tabla con nuevas particiones.

Proyección de particiones no funciona junto con particiones de intervalo

Verifique que la unidad de intervalo de tiempo projection.<columnName>.interval.unit coincide con el delimitador de las particiones. Por ejemplo, si las particiones están delimitadas por días, una unidad de rango de horas no funcionará.

Error de proyección de particiones cuando el intervalo se especifica con un guion

Si se especifica la propiedad de la tabla range con un guion en lugar de una coma, se produce un error similar al de INVALID_TABLE_PROPERTY: para la cadena de entrada: “number-number. Asegúrese de que los valores del intervalo se encuentren separados por una coma, no por un guion. Para obtener más información, consulte Tipo entero.

HIVE_UNKNOWN_ERROR: Unable to create input format

Una o más de las particiones de Glue se declaran en un formato diferente, ya que cada partición de Glue tiene su propio formato de entrada específico de forma independiente. Verifique cómo se definen las particiones en AWS Glue.

HIVE_PARTITION_SCHEMA_MISMATCH

Si el esquema de una partición es diferente al esquema de la tabla, es posible que una consulta falle con el mensaje de error HIVE_PARTITION_SCHEMA_MISMATCH.

Por cada tabla de AWS Glue Data Catalog que tenga columnas de partición, el esquema se almacena en el nivel de tabla y para cada partición individual de la tabla. El esquema de las particiones lo rellena un rastreador de AWS Glue basándose en la muestra de datos que lee en la partición.

Cuando Athena ejecuta una consulta, valida el esquema de la tabla y el esquema de las particiones necesarias para la consulta. En la validación se comparan los tipos de datos de la columna en orden y se confirma que estos tipos de datos coinciden en el caso de las columnas que se solapan. De esta forma, se evita que se produzcan operaciones imprevistas como añadir o eliminar columnas del medio de una tabla. Si Athena detecta que el esquema de una partición es diferente del esquema de la tabla, es posible que Athena no pueda procesar la consulta y genere el error HIVE_PARTITION_SCHEMA_MISMATCH.

Existen varias maneras de resolver este problema. En primer lugar, si los datos se añadieron por error, puede eliminar los archivos de datos que generan la diferencia en el esquema, anular la partición y volver a rastrear los datos. En segundo lugar, puede anular la partición individual y, a continuación, ejecutar MSCK REPAIR en Athena para volver a crear la partición utilizando el esquema de la tabla. Esta segunda opción solo funciona si está convencido de que el esquema aplicado continuará leyendo los datos correctamente.

La tabla SemanticException no está particionada, pero la especificación de partición existe

Este error se puede producir cuando no se definieron particiones en la instrucción CREATE TABLE. Para obtener más información, consulte ¿Cómo puedo solucionar el error “FAILED: la tabla SemanticException no está particionada, pero la especificación de partición existe” en Athena? en el Centro de conocimientos de AWS.

Archivos _$folder$ sin bytes

Si ejecuta una declaración ALTER TABLE ADD PARTITION y especifica erróneamente una partición que ya existe y una ubicación de Amazon S3 incorrecta, se crean archivos de marcador de posición de cero bytes del formato partition_value_$folder$ en Amazon S3. Debe eliminar esos archivos en forma manual.

Para evitar que esto ocurra, utilice la sintaxis ADD IF NOT EXISTS de su declaración ALTER TABLE ADD PARTITION, así:

ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]

Cero registros devueltos de datos particionados

Este problema se puede producir por diversas razones. Para conocer las posibles causas y resoluciones, consulte Creé una tabla en Amazon Athena con particiones definidas, pero cuando consulto la tabla, se devuelven cero registros en el Centro de conocimientos de AWS.

Véase también HIVE_TOO_MANY_OPEN_PARTITIONS.

Permisos

Error de acceso denegado al momento de consultar Simple Storage Service (Amazon S3)

Esto puede suceder cuando no tiene permiso para leer los datos del bucket, permiso para escribir en el bucket de resultados, o si la ruta de Amazon S3 contiene un punto de conexión de región como us-east-1.amazonaws.com. Para obtener más información, consulte Cuando ejecuto una consulta de Athena, aparece un error de “acceso denegado” en el Centro de conocimientos de AWS.

Acceso denegado con código de estado: error 403 al momento de ejecutar consultas DDL en datos cifrados en Amazon S3

Es posible que reciba el mensaje de error Acceso denegado (Servicio: Amazon S3; código de estado: 403; código de error: AccessDenied; ID de solicitud: <request_id>) si se cumplen las siguientes condiciones:

  1. Ejecuta una consulta DDL como ALTER TABLE ADD PARTITION o MSCK REPAIR TABLE.

  2. Tiene un bucket con cifrado predeterminado configurado para usar SSE-S3.

  3. El bucket también tiene una política de bucket como la siguiente, que obliga a las solicitudes PutObject a especificar los encabezados PUT "s3:x-amz-server-side-encryption": "true" y "s3:x-amz-server-side-encryption": "AES256".

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } }, { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } } ] }

En un caso como este, la solución recomendada es eliminar la política de bucket como la anterior, dado que el cifrado predeterminado del bucket ya está presente.

Acceso denegado con código de estado: 403 al momento de consultar un bucket de Amazon S3 en otra cuenta

Este error se puede producir al intentar consultar los registros escritos por otro Servicio de AWS y la segunda cuenta es el propietario del bucket, pero no posee los objetos del bucket. Para obtener más información, consulte Recibo la excepción de Amazon S3 “acceso denegado con código de estado: 403” en Amazon Athena cuando consulto un bucket de otra cuenta en el Centro de conocimientos de AWS.

Utilice credenciales de rol de IAM para conectarse al controlador JDBC de Athena

Puede recuperar las credenciales temporales de un rol para autenticar la conexión JDBC a Athena. Las credenciales temporales tienen una vida útil máxima de 12 horas. Para obtener más información, consulte ¿Cómo puedo usar mis credenciales de rol de IAM o cambiar a otro rol de IAM cuando me conecto a Athena usando el controlador JDBC? en el Centro de conocimientos de AWS.

Problemas con la sintaxis de las consultas

FAILED: NullPointerException name is null (ERROR: el nombre NullPointerException es nulo)

Si utiliza la operación de la API CreateTable de AWS Glue o la plantilla AWS::Glue::Table de AWS CloudFormation para crear una tabla para su uso en Athena sin especificar la propiedad TableType, y luego ejecuta una consulta DDL como SHOW CREATE TABLE o MSCK REPAIR TABLE, puede recibir el mensaje de error FAILED: NullPointerException Name is null (ERROR: el nombre NullPointerException es nulo).

Para resolver el error, especifique un valor para el atributo TableType TableInput como parte de la llamada a la API CreateTable de AWS Glue o la plantilla AWS CloudFormation. Entre los valores posibles para TableType, se incluyen EXTERNAL_TABLE o VIRTUAL_VIEW.

Este requisito se aplica únicamente cuando se crea una tabla mediante la operación de la API CreateTable de AWS Glue o la plantilla AWS::Glue::Table. Si crea una tabla para Athena mediante una instrucción DDL o un rastreador de AWS Glue, la propiedad TableType se define automáticamente.

Función no registrada

Este error se produce al intentar utilizar una función que no es compatible con Athena. Para obtener una lista de las funciones compatibles con Athena, consulte Funciones en Amazon Athena o ejecute la instrucción SHOW FUNCTIONS en el Editor de consultas. También puede escribir su propia función definida por el usuario (UDF, user defined function). Para obtener más información, consulte ¿Cómo resuelvo el error de sintaxis “función no registrada” en Athena? en el Centro de conocimientos de AWS.

Excepciones GENERIC_INTERNAL_ERROR

Las excepciones GENERIC_INTERNAL_ERROR pueden tener diversas causas, entre otras, las siguientes:

  • GENERIC_INTERNAL_ERROR: Null: puede ver esta excepción en cualquiera de las siguientes condiciones:

    • Hay una discrepancia de esquema entre el tipo de datos de una columna de la definición de tabla y el tipo de datos real del conjunto de datos.

    • Ejecuta una consulta (CTAS) CREATE TABLE AS SELECT con sintaxis inexacta.

  • GENERIC_INTERNAL_ERROR: Parent builder is null (GENERIC_INTERNAL_ERROR: el generador principal es nulo): es posible que aparezca esta excepción cuando consulte una tabla con columnas de tipo de datos array y esté utilizando la biblioteca OpenCSVSerDe. El formato OpenCSVSerde no es compatible con el tipo de datos array.

  • GENERIC_INTERNAL_ERROR: el valor supera MAX_INT: puede aparecer esta excepción cuando la columna de datos de origen se define con el tipo de datos INT y tiene un valor numérico superior a 2.147.483.647.

  • GENERIC_INTERNAL_ERROR: el valor supera MAX_BYTE: puede aparecer esta excepción cuando la columna de datos de origen tiene un valor numérico superior al tamaño permitido para el tipo de datos BYTE. El tipo de datos BYTE es equivalente a TINYINT. TINYINT es un número entero firmado de 8 bits en formato de complemento de dos, con un valor mínimo de -128 y un valor máximo de 127.

  • GENERIC_INTERNAL_ERROR: el número de valores de partición no coincide con el número de filtros: puede aparecer esta excepción si tiene particiones incoherentes en los datos de Amazon Simple Storage Service (Amazon S3). Es posible que haya particiones incoherentes en cualquiera de las siguientes condiciones:

    • Las particiones de Amazon S3 han cambiado (ejemplo: se han agregado nuevas particiones).

    • El número de columnas de partición de la tabla no coincide con el de los metadatos de la partición.

Para obtener información más detallada acerca de cada uno de estos errores, consulte ¿Cómo resuelvo el error “GENERIC_INTERNAL_ERROR” cuando consulto una tabla en Amazon Athena? en el Centro de conocimientos de AWS.

El número de grupos coincidentes no concuerda con el número de columnas

Este error se produce al utilizar SerDe de Regex en una instrucción CREATE TABLE y cuando el número de grupos coincidentes de expresiones regulares no concuerda con el número de columnas especificado para la tabla. Para obtener más información, consulte ¿Cómo resuelvo el error de RegexSerDe “el número de grupos coincidentes no concuerda con el número de columnas” en Amazon Athena? en el Centro de conocimientos de AWS.

QueryString no cumplió con la restricción: la longitud debe ser menor o igual a 262 144

La longitud máxima de la cadena de consultas en Athena (262 144 bytes) no es una cuota ajustable. AWS Support no puede aumentar la cuota, pero puede evitar este problema al dividir las consultas largas en otras más pequeñas. Para obtener más información, consulte ¿Cómo puedo aumentar la longitud máxima de la cadena de consultas en Athena? en el Centro de conocimientos de AWS.

SYNTAX_ERROR: No se puede resolver la columna

Este error se puede producir al consultar una tabla creada por un rastreador de AWS Glue desde un archivo CSV codificado UTF-8 que tiene una marca de orden de bytes (BOM, marca de orden de bytes). AWS Glue no reconoce las BOM y las cambia por signos de interrogación, que Amazon Athena no reconoce. La solución consiste en eliminar el signo de interrogación en Athena o en AWS Glue.

Hay demasiados argumentos para llamar a la función

En la versión 3 del motor de Athena, las funciones no pueden aceptar más de 127 argumentos. Esta limitación se estable por diseño. Si utiliza una función con más de 127 parámetros, aparece un mensaje de error como el siguiente:

TOO_MANY_ARGUMENTS: línea nnn:nn: hay demasiados argumentos para llamar a la función function_name().

Para resolver este problema, utilice menos parámetros por llamada a la función.

Problemas con el tiempo de espera

Si se producen errores de tiempo de espera en las consultas de Athena, compruebe los registros de CloudTrail. Las consultas pueden agotarse debido a la limitación de AWS Glue o a las API de Lake Formation. Cuando se producen estos errores, los mensajes de error correspondientes pueden indicar un problema de tiempo de espera de la consulta en lugar de un problema de limitación. Para solucionar el problema, puede comprobar los registros de CloudTrail antes de ponerse en contacto con AWS Support. Para obtener más información, consulte Consulta de registros de AWS CloudTrail y Registro de las llamadas a la API de Amazon Athena con AWS CloudTrail.

Para obtener información sobre los problemas de tiempo de espera de las consultas federadas al llamar a la API ListTableMetadata, consulte Se agotó el tiempo de espera al llamar a ListTableMetadata.

Problemas de limitación

Si las consultas superan los límites de los servicios dependientes, como Amazon S3, AWS KMS, AWS Glue o AWS Lambda, se pueden esperar los siguientes mensajes. Para resolver estos problemas, reduzca el número de llamadas simultáneas que se originan desde la misma cuenta.

Servicio Mensaje de error
AWS Glue AWSGlueException: Rate exceeded. (Se superó el índice).
AWS KMS Ha superado la tasa a la que puede llamar a KMS. Reduzca la frecuencia de las llamadas.
AWS Lambda

Rate Exceeded (Se superó el límite)

TooManyRequestsException (Excepción de demasiadas solicitudes)

Amazon S3 AmazonS3Exception: Please reduce your request rate (AmazonS3Exception: Reduzca el índice de solicitudes).

Para obtener información sobre las formas de evitar la limitación de Amazon S3 cuando utiliza Athena, consulte Evitar la limitación de Amazon S3.

Vistas

Las vistas creadas en el shell de Apache Hive no funcionan en Athena

Debido a las implementaciones completamente diferentes, las vistas creadas en el shell de Apache Hive no son compatibles con Athena. Para resolver este problema, vuelva a crear las vistas en Athena.

La vista es obsoleta; debe volver a crearse

Puede recibir este error si se ha modificado o eliminado la tabla subyacente de una vista. La resolución consiste en volver a crear la vista. Para obtener más información, consulte ¿Cómo puedo resolver el error “La vista es obsoleta; debe volver a crearse” en Athena? en el Centro de conocimientos de AWS.

Grupos de trabajo

Para obtener información sobre cómo solucionar problemas relacionados con grupos de trabajo, consulte Resolución de errores de grupos de trabajo.

Recursos adicionales

En las páginas siguientes se proporciona información adicional para la solución de problemas con Amazon Athena.

También pueden ser de ayuda los siguientes recursos de AWS:

A menudo, la solución de problemas requiere consultas y descubrimiento iterativos por parte de un experto o de una comunidad de ayudantes. Si sigue teniendo problemas después de probar las sugerencias de esta página, contacte con AWS Support (en AWS Management Console, haga clic en Support (Asistencia), Support Center [Centro de asistencia]) o haga una pregunta en AWS re:Post con la etiqueta Amazon Athena.