选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

查询 JSON 数据

聚焦模式
查询 JSON 数据 - Amazon Athena

Amazon Athena 可让您查询 JSON 编码的数据,从嵌套 JSON 中提取数据,搜索值,以及查找 JSON 数组的长度和大小。要了解在 Athena 中查询 JSON 数据的基础知识,请考虑下列星球数据示例:

{name:"Mercury",distanceFromSun:0.39,orbitalPeriod:0.24,dayLength:58.65} {name:"Venus",distanceFromSun:0.72,orbitalPeriod:0.62,dayLength:243.02} {name:"Earth",distanceFromSun:1.00,orbitalPeriod:1.00,dayLength:1.00} {name:"Mars",distanceFromSun:1.52,orbitalPeriod:1.88,dayLength:1.03}

请注意每个记录(实际上是表中的每一行)是如何位于一个单独的行上的。要查询此 JSON 数据,可以使用如下 CREATE TABLE 语句:

CREATE EXTERNAL TABLE `planets_json`( `name` string, `distancefromsun` double, `orbitalperiod` double, `daylength` double) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/json/'

要查询数据,请使用类似以下示例的简单 SELECT 语句。

SELECT * FROM planets_json

查询结果如下所示。

# name distancefromsun orbitalperiod daylength
1 水星 0.39 0.24 58.65
2 金星 0.72 0.62 243.02
3 地球 1.0 1.0 1.0
4 火星 1.52 1.88 1.03

请注意 CREATE TABLE 语句是如何使用 OpenX JSON SerDe 的,它要求每个 JSON 记录都在一个单独的行上。如果 JSON 采用漂亮打印格式,或者所有记录都在一行上,则数据将无法正确读取。

要查询采用漂亮打印格式的 JSON 数据,可以使用 Amazon Ion Hive SerDe 代替 OpenX JSON Serde。考虑以前以漂亮打印格式存储的数据:

{ name:"Mercury", distanceFromSun:0.39, orbitalPeriod:0.24, dayLength:58.65 } { name:"Venus", distanceFromSun:0.72, orbitalPeriod:0.62, dayLength:243.02 } { name:"Earth", distanceFromSun:1.00, orbitalPeriod:1.00, dayLength:1.00 } { name:"Mars", distanceFromSun:1.52, orbitalPeriod:1.88, dayLength:1.03 }

要在不重新设置格式的情况下查询这些数据,可以使用如下 CREATE TABLE 语句。请注意,语句不是指定 OpenX JSON SerDe,而是指定 STORED AS ION

CREATE EXTERNAL TABLE `planets_ion`( `name` string, `distancefromsun` DECIMAL(10, 2), `orbitalperiod` DECIMAL(10, 2), `daylength` DECIMAL(10, 2)) STORED AS ION LOCATION 's3://amzn-s3-demo-bucket/json-ion/'

查询 SELECT * FROM planets_ion 产生的结果与以前相同。有关使用 Amazon Ion Hive SerDe 以这种方式创建表的更多信息,请参阅 创建 Amazon Ion 表

前面的示例 JSON 数据不包含复杂的数据类型,如嵌套数组或结构。有关查询嵌套 JSON 数据的更多信息,请参阅 示例:反序列化嵌套 JSON

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。