繁体   English   中英

Json 到 Athena 表给出 0 个结果

[英]Json to Athena table gives 0 results

我有一个 json,看起来像这样。 没有嵌套。

[{"id": [1984262,1984260]}]

我想使用 sql 在 Athena 中创建一个表,这样我就有一个“id”列,该列中的每一行都包含数组中的一个值。 像这样的东西

id

1984262
1984260

我试过的

CREATE EXTERNAL TABLE table1 (
  id string
 )
 ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
 LOCATION 's3://data-bucket/data.json';

CREATE EXTERNAL TABLE table2 (
  id array<string>
 )
 ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
 LOCATION 's3://data-bucket/data.json';

CREATE EXTERNAL TABLE table2 (
  id array<bigint>
 )
 ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
 LOCATION 's3://data-bucket/data.json';

当我预览表格时,我看到完全没有数据的空行。 请帮忙。

长话短说:您的 JSON 文件需要符合 JSON-SerDe。

要使用 athena 查询 json 数据,您需要定义一个 JSON(反)序列化器。 您选择了 Hive JSON SerDe。https://docs.aws.amazon.com/athena/latest/ug/json-serde.html

现在您的数据需要符合该序列化程序。 对于 Hive JSON SerDe,这意味着每一行需要是对应于一条记录的单行 json。 对你来说这意味着:

{ "id" : 1984262 }
{ "id" : 1984260 }

相应的表定义是

 CREATE EXTERNAL TABLE table1 (
  id bigint
 )
 ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
 LOCATION 's3://data-bucket/data.json';

https://github.com/rcongiu/Hive-JSON-Serde/blob/develop/README.md

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM