微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HIVE_BAD_DATA:解析字段值 JSONObject 时出错,无法将其转换为 Int

如何解决HIVE_BAD_DATA:解析字段值 JSONObject 时出错,无法将其转换为 Int

我正在通过 lambda 函数将缩小的 JSON 文件上传到 S3,该函数使用 API 调用提取数据并将一些数据保存为 JSON。然后,胶水爬虫会爬取存储桶并找到一个新的 JSON 文件。 Crawler 将表添加到数据目录中的数据库中。当我在 Athena 中查询数据库时,我收到以下错误消息。我不确定为什么该字段可能是完整的 JSON 对象而不是 INT 值。下面是我能描述的最好的设置。

任何解决方案或想法将不胜感激。

查询: SELECT * FROM ""."" 限制 10;

错误信息: HIVE_BAD_DATA: 解析字段值 '{'id': 1,'name': 'some name','is_active': true}' 时出错,字段 0: org.openx.data.jsonserde.json.JSONObject 无法转换为 java .lang.Integer.

示例文件名: .json 12:00:00.json

示例 JSON(实际缩小):

[
{'id': 1,'is_active': true},{'id': 1,'is_active': true}
]

存储桶路径: ////

JSON 分类器: $[*]

解决方法

现在无法测试,但我会这样做:

  1. 将单引号 (') 替换为双引号 (") 以将 JSON 文档中的键和字符串值括起来;我不确定 Athena 是否可以读取单引号 JSON。
  2. 从列表中删除每个条目,然后将其视为新行 JSON 文档。例如:

{"id": 1,"name": "some name","is_active": true}\n

{"id": 1,"is_active": true}\n

观察:请记住,Athena 无法读取同一行中的多个 JSON 文档。它只读取文本文件每一行的第一次出现。

  1. 检查是否存在错误或未转义的引号

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。