Como resolvo a exceção “HIVE_CURSOR_ERROR” ao consultar uma tabela no Amazon Athena?

3 minuto de leitura
0

Quando executo consultas na minha tabela do Amazon Athena, recebo uma exceção “HIVE_CURSOR_ERROR”.

Resolução

Você poderá obter essa exceção sob uma das seguintes condições:

  • Os objetos de dados na localização da tabela estão corrompidos, não são válidos ou estão compactados incorretamente.
  • Os registros nos dados da tabela não são válidos (exemplo: um registro JSON malformado).

Exceções comuns do HIVE_CURSOR_ERROR

Você pode receber uma das seguintes exceções HIVE_CURSOR_ERROR quando houver um problema com os objetos subjacentes:

  • HIVE_CURSOR_ERROR: verificação incorreta do cabeçalho
  • HIVE_CURSOR_ERROR: tipo de bloco inválido
  • HIVE_CURSOR_ERROR: verificação de dados incorreta
  • HIVE_CURSOR_ERROR: Fim inesperado do fluxo de entrada
  • HIVE_CURSOR_ERROR: comprimentos de bloco armazenados inválidos
  • HIVE_CURSOR_ERROR: código de distância inválido

Se você adicionou recentemente novos objetos à localização da tabela do Amazon Simple Storage Service (Amazon S3), verifique se esses objetos são válidos e não estão corrompidos. Baixe os objetos e depois verifique-os usando uma ferramenta apropriada. Por exemplo, descompacte os objetos compactados com GZIP para verificar se a compactação é válida.

Se sua tabela estiver particionada, verifique se você pode consultar partições individuais. Se houver novas partições na tabela, elas podem conter objetos inválidos.

Exceções específicas do HIVE_CURSOR_ERROR

HIVE_CURSOR_ERROR: a linha não é um objeto JSON válido

Você recebe esse erro quando uma linha na tabela não é um registro JSON válido.

Para resolver esse problema, faça o seguinte:

  1. Recrie a tabela adicionando a propriedade 'ignore.malformed.json' = 'true'.
  2. Consulte a nova tabela para identificar os arquivos com registros malformados executando um comando semelhante ao seguinte:
SELECT "$path" FROM example_table WHERE example_column = NULL

Para obter mais informações, consulte Resolver erros de JSON no Amazon Athena e Opções do OpenX JSON SerDe.

HIVE_CURSOR_ERROR: Bloco não comprimido corrompido

Você recebe esse erro quando os objetos na localização da tabela são compactados usando o formato LZO.

Para evitar esse erro com dados compactados com LZO, recrie a tabela com o INPUTFORMAT “com.hadoop.mapred.deprecatedLzoTexInputFormat”. Por exemplo:

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/'

Você também pode resolver esse erro usando um formato de compactação diferente.

HIVE_CURSOR_ERROR: não é possível ler o valor em 0 no bloco 0 no arquivo

Você recebe esse erro quando tem objetos de Parquet inválidos no caminho do S3. Verifique se seus objetos Parquet contêm tipos de dados DECIMAL. Se os objetos Parquet contiverem tipos de dados DECIMAL e tiverem sido escritos usando o Spark, eles podem ser incompatíveis com o Hive. Para verificar essa condição, tente ler os objetos Parquet em uma tarefa do Spark.

Se for possível ler os objetos do Parquet usando a tarefa Spark, reescreva os objetos do Parquet com o modo legado no Spark com a seguinte configuração:

spark.sql.parquet.writeLegacyFormat = true

Para obter informações sobre as opções de configuração do Spark para o Parquet, consulte Configuração no guida do Spark SQL.

HIVE_CURSOR_ERROR: org.apache.hadoop.io.ArrayWritable não pode ser convertido em org.apache.hadoop.io.Text

Esse erro aparece se você usou um SerDe incorreto durante a definição da tabela. Por exemplo, a tabela talvez esteja usando um JSON SerDe, e os dados de origem incluem objetos Parquet.

Para resolver esse erro, verifique os dados de origem e confirme se o SerDe correto foi usado. Para obter mais informações, consulte SerDes e formatos de dados compatíveis.


Informações relacionadas

Como resolvo “HIVE_CURSOR_ERROR: a linha não é um objeto JSON válido - JSONException: chave duplicada” ao ler arquivos do AWS Config no Athena?

Solução de problemas no Athena

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos