跳至内容

如何解决 Athena 中的 "unable to create input format" 错误?

2 分钟阅读
0

当我在 Amazon Athena 中运行查询时,我收到了 "unable to create input format" 错误。

简短描述

由于以下原因之一,会出现 "unable to create input format" 错误:

  • Athena 查询中的数据源不受支持
  • Athena 不支持该数据格式
  • AWS Glue 爬网程序无法对数据格式进行分类
  • AWS Glue 表定义属性中有一项或多项为空

解决方法

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

Athena 只能查询存储在 Amazon Simple Storage Service (Amazon S3) 中的表。如果您查询的数据源未存储在 S3 中,则会收到 "unable to create input format" 错误。

要解决此错误,请使用 Athena Query Federation SDK。该 SDK 允许您使用自己的代码自定义 Athena。借助 Athena Federation SDK,您可以与不同的数据源和专有数据格式集成。还可以构建新的用户定义函数。有关更多信息,请参阅使用 Amazon Athena 的新联合查询功能查询任何数据源

Athena 不支持该数据格式

您可以运行 AWS Glue 爬网程序,从 S3 中的文件在 Athena 中创建表,但某些文件类型不受 Athena 支持。例如,Athena 不支持诸如 .ion.xml 等文件类型。

如果您在 Athena 中查询来自不受支持的文件类型的表,则会收到 "HIVE_UNKNOWN_ERROR: Unable to create input format" 错误。要解决此错误,请使用 Athena 支持的数据格式

AWS Glue 爬网程序无法对数据格式进行分类

如果您的 AWS Glue 爬网程序无法识别表架构中的某一列数据类型,则爬网程序会将此列归类为 UNKNOWN(未知)。您会收到 "HIVE_UNKNOWN_ERROR: Unable to create input format" 错误(当您查询包含 UNKNOWN(未知)数据类型列的 Athena 表时)。当您为 Glue 爬网程序使用的内置分类器无法识别架构中的数据类型时,就会出现此分类错误。

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

AWS Glue 表定义属性中有一项或多项为空

在 Athena 中查询非 AWS Glue 创建的表时,也可能会收到输入格式错误。例如,如果您在 AWS Glue 控制台上手动创建表,则可能会出现错误。如果 AWS Glue 表定义中的以下任一属性为空,则会收到 "HIVE_UNKNOWN_ERROR: Unable to create input format" 错误:

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

确认已为 SerDe 和数据格式正确设置了这些属性。请注意,您指定的 SerDe 定义了表架构。SerDe 可以覆盖您在 Athena 中创建表时指定的 DDL 配置。

要更新表定义属性,请完成以下步骤:

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

相关信息

定义和管理分类器

使用 SerDe

连接到数据源

使用 Amazon Athena 联合查询

AWS 官方已更新 2 年前