¿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
Si hay un problema en los objetos subyacentes, se podría mostrar una de las siguientes excepciones HIVE_CURSOR_ERROR:
- 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 Simple Storage Service (Amazon S3) recientemente, asegúrese de que sean válidos y no estén dañados. Descargue los objetos y, a continuación, inspecciónelos con la herramienta adecuada. Por ejemplo, descomprima los objetos comprimidos en GZIP para comprobar si la compresión es válida.
Si la tabla tiene particiones, compruebe si puede consultar particiones individuales. Si hay particiones nuevas en la tabla, 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:
- Vuelva a crear la tabla con la propiedad 'ignore.malformed.json' = 'true'.
- Consulte la nueva tabla para identificar los archivos con registros mal formados mediante la ejecución de un comando similar al siguiente:
SELECT "$path" FROM example_table WHERE example_column = NULL
Para obtener más información, consulte Resolve JSON errors in Amazon Athena y OpenX JSON SerDe Options.
HIVE_CURSOR_ERROR: bloque descomprimido dañado
Este error se muestra cuando los objetos de la ubicación de la tabla se comprimen con el formato LZO.
Para evitar 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 no válidos en la ruta de S3. Compruebe si sus objetos de Parquet contienen datos del tipo DECIMAL. Si los objetos de Parquet contienen datos del tipo DECIMAL y se escribieron con Spark, es posible que no sean compatibles con Hive. Para comprobarlo, intente leer los objetos de Parquet de un trabajo de Spark.
Si puede leer los objetos de Parquet mediante el trabajo de Spark, vuelva a escribir los objetos de Parquet 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 Configuration en la guía 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 durante 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 ha utilizado el valor de SerDe correcto. Para obtener más información, consulte Supported SerDes and data formats.
Información relacionada
Contenido relevante
- OFICIAL DE AWSActualizada hace 3 años
- ¿Cómo puedo solucionar el error «GENERIC_INTERNAL_ERROR» cuando consulto una tabla en Amazon Athena?OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 3 años