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.
Temas
- CREATE TABLE AS SELECT (CTAS)
- Problemas de archivos de datos
- Tablas de Linux Foundation Delta Lake
- Consultas federadas
- Errores relacionados con JSON
- MSCK REPAIR TABLE
- Problemas de salida
- Problemas de Parquet
- Problemas de particiones
- Permisos
- Problemas con la sintaxis de las consultas
- Problemas con el tiempo de espera
- Problemas de limitación
- Vistas
- Grupos de trabajo
- Recursos adicionales
- Catálogo de errores de Athena
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:
-
El tipo de datos definido en la tabla no coincide con los datos de origen, o un solo campo contiene diferentes tipos de datos. Para obtener resoluciones sugeridas, consulte My Amazon Athena query fails with the error "HIVE_BAD_DATA: Error parsing field value for field x: For input string: "12312845691""
(Mi consulta de Amazon Athena devuelve el error "HIVE_BAD_DATA: error al momento de analizar el valor del campo x: para la cadena de entrada: "12312845691"") en el Centro de conocimientos de AWS. -
Los valores nulos están presentes en un campo entero. Una solución alternativa es crear la columna con los valores nulos como
string
y, a continuación, utilizarCAST
para convertir el campo de una consulta y proporcionar un valor predeterminado de0
para valores nulos. Para obtener más información, consulte Cuando consulto datos CSV en Athena, obtengo el error "HIVE_BAD_DATA: error al momento de analizar el valor " del campo x: para la cadena de entrada"""en el Centro de conocimientos de AWS.
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?
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?
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:
-
En AWS Glue, ejecute el rastreador AWS Glue.
-
En Athena, suelte la tabla y créela de nuevo.
-
Agregue las columnas que faltan manualmente, ya sea mediante la instrucción ALTER TABLE ADD COLUMNS de Athena o editando el esquema de la tabla en AWS Glue.
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 utilizarStartQueryExecution
como alternativa aListTableMetadata
. Los siguientes ejemplos de AWS CLI muestran cómo se puede utilizarStartQueryExecution
en lugar deListTableMetadata
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
Errores relacionados con JSON
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
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?
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
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
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?
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
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?
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
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
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: “
. 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.number
-number
”
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?
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
en Amazon S3. Debe eliminar esos archivos en forma manual.partition_value
_$folder$
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
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”
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:
si se cumplen las siguientes condiciones:<request_id>
)
-
Ejecuta una consulta DDL como
ALTER TABLE ADD PARTITION
oMSCK REPAIR TABLE
. -
Tiene un bucket con cifrado predeterminado configurado para usar
SSE-S3
. -
El bucket también tiene una política de bucket como la siguiente, que obliga a las solicitudes
PutObject
a especificar los encabezadosPUT
"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
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?
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?
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 datosarray
. -
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 datosBYTE
es equivalente aTINYINT
.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?
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?
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?
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 |
|
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?
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