如何解决HIVE_BAD_DATA:解析字段值 JSONObject 时出错,无法将其转换为 Int
我正在通过 lambda 函数将缩小的 JSON 文件上传到 S3,该函数使用 API 调用提取数据并将一些数据保存为 JSON。然后,胶水爬虫会爬取存储桶并找到一个新的 JSON 文件。 Crawler 将表添加到数据目录中的数据库中。当我在 Athena 中查询数据库时,我收到以下错误消息。我不确定为什么该字段可能是完整的 JSON 对象而不是 INT 值。下面是我能描述的最好的设置。
任何解决方案或想法将不胜感激。
查询:
SELECT * FROM "
错误信息: HIVE_BAD_DATA: 解析字段值 '{'id': 1,'name': 'some name','is_active': true}' 时出错,字段 0: org.openx.data.jsonserde.json.JSONObject 无法转换为 java .lang.Integer.
示例文件名:
示例 JSON(实际缩小):
[
{'id': 1,'is_active': true},{'id': 1,'is_active': true}
]
存储桶路径:
JSON 分类器: $[*]
解决方法
现在无法测试,但我会这样做:
- 将单引号 (') 替换为双引号 (") 以将 JSON 文档中的键和字符串值括起来;我不确定 Athena 是否可以读取单引号 JSON。
- 从列表中删除每个条目,然后将其视为新行 JSON 文档。例如:
{"id": 1,"name": "some name","is_active": true}\n
{"id": 1,"is_active": true}\n
观察:请记住,Athena 无法读取同一行中的多个 JSON 文档。它只读取文本文件每一行的第一次出现。
- 检查是否存在错误或未转义的引号
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。