在 S3 中的 Presto 中查询 JSON 文件

Query JSON file in Presto in S3

我在 S3 中有一个文件,在 EMR 上有 Presto 运行。我知道我可以使用 Json_extract 来阅读 json。

我是 运行 以下查询,但是,我一直看到 null 而不是正确的值。

select json_extract('s3a://random-s3-bucket/analytics/20210221/myjsonfile.json', '$.dateAvailability')

我看到了这个输出

不确定我的语法是否有误?想法?

json_extract() 对保存在内存中的 JSON 标量值进行操作。它不会从外部位置加载数据。有关使用示例,请参阅文档页面。

为了使用 Trino (formerly known as Presto SQL) 查询 JSON 文件,您需要将其映射为具有 JSON 格式的 table,如下所示:

CREATE TABLE my_table ( .... )
WITH (
    format = 'JSON',
    external_location = 's3a://random-s3-bucket/analytics/20210221'
);

Hive connector documentation 中查看更多信息。

如果您需要一个工具来帮助您创建 table 语句,试试这个:https://www.hivetablegenerator.com

来自页面:

Easily convert any JSON (even complex Nested ones), CSV, TSV, or Log sample file to an Apache HiveQL DDL create table statement.