¿Cómo puedo solucionar la excepción «HIVE_CURSOR_ERROR» cuando consulto una tabla en Amazon Athena?
Cuando ejecuto consultas en mi tabla de Amazon Athena, se muestra la excepción «HIVE_CURSOR_ERROR».
Resolución
Esta excepción podría mostrarse en las siguientes situaciones:
- Los objetos de datos de la ubicación de la tabla están dañados, no son válidos o no se han comprimido correctamente.
- Los registros en los datos de la tabla no son válidos (por ejemplo: un registro JSON con formato incorrecto).
Excepciones HIVE_CURSOR_ERROR habituales
Es posible que se produzca una de las siguientes excepciones cuando haya un problema con estos objetos en la ubicación de la tabla de Amazon Simple Storage Service (Amazon S3):
- HIVE_CURSOR_ERROR: comprobación de encabezado incorrecta
- HIVE_CURSOR_ERROR: tipo de bloque no válido
- HIVE_CURSOR_ERROR: comprobación de datos incorrecta
- HIVE_CURSOR_ERROR: fin inesperado del flujo de entrada
- HIVE_CURSOR_ERROR: longitudes de bloque almacenado no válidas
- HIVE_CURSOR_ERROR: código de distancia no válido
Si ha añadido objetos nuevos a la ubicación de su tabla de Amazon S3 recientemente, asegúrese de que sean válidos y no estén dañados. Descargue los objetos y, posteriormente, utilice su herramienta favorita para inspeccionarlos. Por ejemplo, descomprima los objetos comprimidos en GZIP para comprobar si la compresión es válida.
Si la tabla tiene particiones, compruebe a continuación si puede consultar particiones individuales. Si hay particiones nuevas en la tabla, posteriormente es posible que contengan objetos que no sean válidos.
Excepciones HIVE_CURSOR_ERROR específicas
HIVE_CURSOR_ERROR: la fila no es un objeto JSON válido
Este error se muestra cuando una fila de la tabla no es un registro JSON válido.
Para solucionar este problema, siga estos pasos:
- Añada la propiedad 'ignore.malformed.json' = 'true' para volver a crear la tabla.
- Ejecute un comando para consultar la nueva tabla para identificar los archivos con registros mal formados que sea similar al siguiente:
SELECT "$path" FROM example_table WHERE example_column = NULL
Para obtener más información, consulte ¿Por qué aparecen errores cuando intento leer datos JSON en Amazon Athena? y SerDe JSON de OpenX.
HIVE_CURSOR_ERROR: bloque descomprimido dañado
Este error se muestra cuando utiliza el formato LZO para comprimir los objetos de la ubicación de la tabla.
Para resolver este error en el caso de los datos comprimidos con LZO, vuelva a crear la tabla con el INPUTFORMAT «com.hadoop.mapred.DeprecatedLzoTextInputFormat». Por ejemplo:
CREATE EXTERNAL TABLE example_table ( example_column_1 STRING, example_column_2 STRING ) STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://example_bucket/example_prefix/'
Para solucionar este error, también puede utilizar otro formato de compresión.
HIVE_CURSOR_ERROR: no se puede leer el valor 0 en el bloque 0 del archivo
Este error se muestra cuando hay objetos de Parquet que no son válidos en la ruta de S3. Compruebe si sus objetos de Parquet contienen datos del tipo DECIMAL. Si ha utilizado Spark para escribir los objetos de Parquet contienen datos del tipo DECIMAL, es posible que no sean compatibles con Hive. Para comprobarlo, lea los objetos de Parquet de un trabajo de Spark.
Si puede utilizar el trabajo de Spark para leer los objetos de Parquet, vuelva a escribir los objetos con el modo heredado en Spark y la siguiente configuración:
spark.sql.parquet.writeLegacyFormat = true
Para obtener información sobre las opciones de configuración de Spark para Parquet, consulte Configuración en el sitio web SQL de Spark.
HIVE_CURSOR_ERROR: org.apache.hadoop.io.ArrayWritable no se puede convertir en org.apache.hadoop.io.Text
Este error se muestra si ha utilizado un valor de SerDe incorrecto para la definición de la tabla. Por ejemplo, puede que la tabla utilice JSON SerDe, pero los datos de origen incluyan objetos de Parquet.
Para solucionar este error, compruebe los datos de origen y confirme que se utiliza el valor de SerDe correcto. Para obtener más información, consulte Formatos de datos y SerDes compatibles.
Errores HIVE\ _CURSOR\ _ERROR con los archivos leídos de AWS Config
HIVE\ _CURSOR\ _ERROR: java.io.IOException: Se espera el inicio del objeto
Este error se muestra si los datos JsonSerDe no pueden obtener el objeto de inicio del registro JSON. Los datos no coinciden con el esquema o los archivos se dañan al ejecutar una consulta.
Para resolver este error, utilice un SerDe diferente en lugar del predeterminado org.apache.hive.hcatalog.data.JsonSerDe, como org.openx.data.jsonserde.JsonSerDe. A continuación, defina la propiedad de la tabla en 'ignore.malformed.json' = 'true '.
Para obtener más información, consulte Bibliotecas de SerDe JSON.
HIVE\ _CURSOR\ _ERROR: java.io.IOException: El token de inicio no se encontró donde se esperaba.
Este error se muestra si la ubicación de la tabla de Athena contiene archivos distintos de los que entrega AWS Config. Por ejemplo, cuando la salida CSV de una consulta de Athena se establece en la misma ubicación que los archivos de configuración de AWS en formato JSON.
Para resolver este error, mueva o elimine los archivos que no haya generado AWS Config. Para los resultados de las consultas de Athena, los archivos de salida se almacenan en el siguiente patrón de rutas:
QueryResultsLocationInS3/[QueryName|Unsaved/yyyy/mm/dd/]
HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: Clave duplicada
Este error se muestra si los recursos de AWS Config tienen varias etiquetas con el mismo nombre o algunas están en mayúsculas y otras en minúsculas.
Para resolver este error, consulte How do I resolve "HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: Duplicate key" when reading files from AWS Config in Athena?
Información relacionada
Contenido relevante
- ¿Cómo puedo solucionar el error «GENERIC_INTERNAL_ERROR» cuando consulto una tabla en Amazon Athena?OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 4 años
- OFICIAL DE AWSActualizada hace 4 años