Sam*_*Dev 6 json amazon-web-services presto amazon-athena
我在 Athena 中创建了一个具有以下结构的表
CREATE EXTERNAL TABLE s3_json_objects (
    devId string,
    type string,
    status string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ( 'ignore.malformed.json' = 'true')
LOCATION 's3://mybucket/folder1/data/athena_test/';
S3 存储桶对象包含这样的 JSON 结构
Run Code Online (Sandbox Code Playgroud){ "devId": "00abcdef1122334401", "type": "lora", "status": "huihuhukiyg" }
然而,下面的 SQL 正常工作并返回正确的结果,仅用于计数
SELECT count(*) as total_s3_objects FROM "athena_db"."s3_json_objects"
但是每当我在 SQL select 语句下查询以从 S3 中获取 JSON 值时,它都会返回带有列空值的结果集
Run Code Online (Sandbox Code Playgroud)SELECT devid FROM "athena_db"."s3_json_objects" SELECT json_extract(devid , '$.devid') as Id FROM "athena_db"."s3_json_objects" SELECT * FROM "athena_db"."s3_json_objects"
此外,我在 StackOverflow 和AWS Athena doc上发布此问题之前查看了这些链接
来自字符串字段的 AWS Athena json_extract 查询返回空值
任何意见或建议将不胜感激。
JSON 必须位于一行中,如AWS Athena 文档的本页所述。您可以在不同的行上放置多个 JSON 对象,但每个完整的对象只能跨越一行。
示例(这可能全部位于一个 S3 对象中):
{"devId": "a1", "type": "b1", "status": "c1"}
{"devId": "a2", "type": "b2", "status": "c2"}
| 归档时间: | 
 | 
| 查看次数: | 4425 次 | 
| 最近记录: |