HIVE_BAD_DATA:解析字段值JSONObject不能强制转换为Int



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

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

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

错误信息:HIVE_BAD_DATA:错误解析字段值'{'id': 1, 'name': '某些名称','is_active': true}'对于字段0:org.openx.data.jsonserde.json.JSONObject不能转换为java.lang.Integer.

示例文件名:& lt; time_uploaded>. json12:00:00.json

示例JSON(实际值被缩小):

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

斗路径:& lt; bucket_name>& lt; database_name>& lt; table_name>/& lt; date_uploaded>/

JSON分类器:美元[*]

现在不能测试,但我要这样做:

  1. 用双引号(")代替单引号(')来括住JSON文档中的键和字符串值;我不确定雅典娜是否可以读取单引号JSON。
  2. 从列表中删除每个条目并将其视为新行JSON文档。例:

{"id" 1、"name":"一些name","is_active":真正} n

{"id" 1、"name":"一些name","is_active":真正} n

{"id" 1、"name":"一些name","is_active":真正} n

奥林匹克广播服务公司。记住,Athena不能在同一行读取多个JSON文档。它只读取文本文件每行上的第一个出现。

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

最新更新