我在 Amazon Athena 中尝试读取 JSON 数据时,收到 NULL 或不正确数据错误。我如何解决此问题?

要对 NULL 或不正确数据错误进行补救,请查看以下常见问题:

在 Amazon Athena 中使用正确的 JSON SerDe 读取数据

Athena 能够使用两种 JSON SerDes 之一读取 JSON 数据:

  • 本机 Hive / HCatalog JsonSerDe (org.apache.hive.hcatalog.data.JsonSerDe)
  • OpenX SerDe (org.openx.data.jsonserde.JsonSerDe)

如果不确定使用哪个 SerDE,请尝试两个可用的 SerDE 版本。

确保 JSON 记录为单行

Athena 目前不支持多行 JSON 记录。

用不区分大小写的列生成数据

Athena 不区分大小写,因此如果列名仅大小写不同(例如,“Column”和“column”),Athena 将生成错误,您的数据在 Athena 中将不可见。

提供用于忽略错误格式记录的选项

如果您使用“org.openx.data.jsonserde.JsonSerDe”SerDe,可提供用于忽略错误格式记录的选项。这会返回 NULL 形式的错误格式记录:

CREATE EXTERNAL TABLE json (
    a string,
    b int
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ( 'ignore.malformed.json' = 'true')
LOCATION 's3://bucket/path/';

在创建表后,对新表运行新查询。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2016 年 12 月 15 日

更新时间:2017 年 9 月 25 日