0

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

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

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

我看到这个输出

在此处输入图像描述

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

4

2 回答 2

1

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

从页面:

轻松将任何 JSON(甚至是复杂的嵌套文件)、CSV、TSV 或日志示例文件转换为 Apache HiveQL DDL 创建表语句。

于 2021-03-18T15:33:02.970 回答
1

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

为了使用 Trino(以前称为 Presto SQL)查询 JSON 文件,您需要将其映射为 JSON 格式的表,如下所示:

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

在Hive 连接器文档中查看更多信息。

于 2021-02-23T20:48:20.250 回答