簡體   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