You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过S3中的JSON文件创建可查询的Athena表,查询返回空结果

无法通过S3中的JSON文件创建可查询的Athena表,查询返回空结果

看起来你遇到的问题很常见,主要是Athena对JSON文件的格式要求和嵌套结构解析的细节导致的,我来帮你一步步排查解决:

1. 首先检查JSON文件的格式是否符合Athena的默认要求

Athena默认使用的OpenX JSON SerDe(JSON序列化/反序列化器)要求JSON文件采用JSON Lines格式——也就是每行一个完整的JSON对象,而不是像你现在这样的格式化多行结构。这种多行缩进的JSON会让SerDe无法正确识别完整的对象,最终导致查询时返回空结果。

你当前的文件格式:

{
  "workflow": {
    "req": {
      "ap": {
        "id": 799330,
        "reqname": "Mimi",
        "manual": true,
        "portappid": "DTV2207241418NT00",
        "status": null,
        "createdBy": "DealerTrack_v3",
        "createdOn": "2024-07-22T12:19:39.017",
        "requestDate": "2001-02-13T19:00:00",
        "appno": "DTV2207241418NT00",
        "abc": null,
        "type1": "retail"
      }
    }
  }
}

需要改成单行的JSON Lines格式:

{"workflow":{"req":{"ap":{"id":799330,"reqname":"Mimi","manual":true,"portappid":"DTV2207241418NT00","status":null,"createdBy":"DealerTrack_v3","createdOn":"2024-07-22T12:19:39.017","requestDate":"2001-02-13T19:00:00","appno":"DTV2207241418NT00","abc":null,"type1":"retail"}}}}

修改后重新运行Crawler,或者直接刷新表的分区,再查询应该就能看到数据了。

2. 如果无法修改JSON文件,调整表的SerDe配置

要是你没办法修改S3里的JSON文件格式,可以通过修改表的属性,让OpenX JSON SerDe支持多行JSON解析:

ALTER TABLE new1_json SET TBLPROPERTIES (
  'openx.serde.parse.multi.line.json' = 'true',
  'serialization.format' = '1'
);

执行这条语句后,重新查询表,应该就能正确读取多行格式的JSON了。

3. 确认查询方式是否正确

即使表结构正确,直接使用SELECT * FROM new1_json可能会因为嵌套结构的显示问题让你误以为结果是空的——Athena会把struct类型显示为类似{...}的格式,但不会展开内容。你可以尝试直接查询嵌套字段来验证数据是否存在:

SELECT
  workflow.req.ap.id,
  workflow.req.ap.reqname,
  workflow.req.ap.createdBy
FROM new1_json

如果数据被正确读取,这条查询会返回对应的字段值。

4. 检查Crawler的配置细节

  • 确保Crawler的数据源指向的是包含该JSON文件的S3路径(而不是单个文件,虽然单个文件也能工作,但路径方式更可靠);
  • 检查Crawler使用的分类器:默认的JSON分类器是针对JSON Lines格式的,如果你的文件是多行的,可能需要自定义一个支持多行JSON的分类器,或者直接用上面的SerDe配置调整来解决。

备注:内容来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:50:32