在 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 不支持的格式,例如 ion 或 xml。
- 当您从 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 可以覆盖您在 Athena 中指定的 DDL 配置。
要更新表定义属性,请执行以下操作:
- 打开 AWS Glue 控制台。
- 选择要更新的表。
- 选择 Actions(操作),然后选择 View details(查看详细信息)。
- 选择 Edit table(编辑表)。
- 更新输入格式、输出格式或 Serde 名称设置。
- 选择 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。
相关信息
向爬网程序中添加分类器
使用 SerDe