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

上次更新时间:2021 年 5 月 14 日

在 Amazon Athena 中运行查询时,我收到“unable to create input format”(无法创建输入格式)错误。

解决方法

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

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

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

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

Athena 不支持该数据格式

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

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

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

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

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

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

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

要更新表定义属性,请执行以下操作:

  1. 打开 AWS Glue 控制台
  2. 选择要更新的表。
  3. 选择 Actions(操作),然后选择 View details(查看详细信息)。
  4. 选择 Edit table(编辑表)。
  5. 更新输入格式输出格式Serde 名称设置。
  6. 选择 Apply(应用)。

Athena 查询中的数据源不受支持

仅当表存储在 Amazon S3 中时,Athena 才支持查询表。如果查询 Athena 不支持的数据源,可能会出现“unable to create input format”(无法创建输入格式)错误。

要解决此错误,请使用 Athena Query Federation SDK。此 SDK 允许您使用自己的代码自定义 Athena。借助 Athena Fideration SDK,您可以与不同的数据源和专有数据格式进行集成。您还可以构建新的用户定义函数。有关更多信息,请参阅Query any data source with Amazon Athena’s new federated query


这篇文章对您有帮助吗?


您是否需要账单或技术支持?