Como resolvo a exceção “HIVE_CURSOR_ERROR” ao consultar uma tabela no Amazon Athena?
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:
- Recrie a tabela adicionando a propriedade 'ignore.malformed.json' = 'true'.
- 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
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 3 anos