如何解决 Athena 中的“无法创建输入格式”错误?

上次更新时间:2020 年 4 月 20 日

在 Amazon Athena 中运行查询时,我收到错误“无法创建输入格式”。

解决方法

此错误的原因有许多种。以下是一些常见的场景和解决方案:

爬网程序无法分类该数据格式

  • 数据存储在 Amazon Simple Storage Service (Amazon S3) 中。
  • 您运行含有内置分类器的 AWS Glue 爬网程序来检测表架构。爬网程序返回分类 UNKNOWN。检测到至少一列,但架构不正确。
  • 当您从 Athena 查询表时,查询将失败并提示错误“HIVE_UNKNOWN_ERROR:无法创建输入格式”。

要解决此错误,请使用内置分类器支持的数据类型。如果内置分类器无法给数据格式分类,请考虑使用自定义分类器

Athena 不支持该数据格式

  • 数据存储在 Amazon S3 中。
  • 您运行爬网程序来创建表。爬网程序将表分类为 Athena 不支持的格式,例如 ionxml
  • 当您从 Athena 查询表时,查询将失败并提示错误“HIVE_UNKNOWN_ERROR:无法创建输入格式”。

要解决此错误,请使用 Athena 支持的数据格式

一个或多个 AWS Glue 表定义属性为空

  • AWS Glue 表定义不是在 Athena 中创建的,或者不是由 AWS Glue 爬网程序创建的。该表定义使用任何其他方法创建。例如,表在 AWS Glue 控制台上手动创建
  • 当您从 Athena 查询表时,查询将失败并提示错误“HIVE_UNKNOWN_ERROR:无法创建输入格式”。

发生此错误是由于 AWS Glue 表定义中的以下一项或多项属性为空:

  • 输入格式
  • 输出格式
  • Serde 名称

确认 SerDe 和数据格式的这些属性设置正确。请记住,您指定的 SerDe 将定义表架构。当您创建表时,该 SerDe 可以覆盖您在 Athena 中指定的 DDL 配置。

要更新表定义属性:

  1. 打开 AWS Glue 控制台
  2. 选择表名称旁边的复选框,然后选择操作查看详细信息
  3. 选择编辑表
  4. 更新输入格式输出格式Serde 名称设置。
  5. 选择应用

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?