1

尝试展平具有两个地图/字典字段(custom_event1 和 custom_event2)的输入 JSON 数据,其中可能包含任何键值对数据。为了从数据框创建输出表,必须避免 custom_events 的扁平化并将其作为 JSON 字符串存储在列中。

文档之后,Relationalize.apply 也在展平 custom_events 地图。

Sample JSON:

{
    "id": "sklfsdfskdlfsdfsdfkhsdfssdf",
    "idtype": "cookieId",
    "event": "install",
    "sub_event": null,
    "ip": "XXXXXX",
    "geo": {
        "country": "IN",
        "city": null,
        "region": null
    },
    "carrier": {
        "operator": null,
        "network": null,
        "connection_type": null
    },
    "user_agent": "Mozilla/5.0",
    "device": {
        "brand": "LYF",
        "model": null,
        "type": null
    },
    "package": {
        "pkgName": "XXXXXXXX",
        "pkgVersion": "1.5.6.3",
        "pkgRating": null,
        "timestamp": "2017-12-14 11:51:27"
    },
    "custom_event1": {
        "key1": "value1",
        "key2": "value2"
    },
    "custom_event2": {
        "key": "value"
    }
}

如何在关系存储中存储带有动态映射字段的 JSON 数据?

4

2 回答 2

1

您需要的步骤,假设 JSON 数据在 S3 中

  1. 在 AWS Glue 中创建一个 Crawler 并让它在目录(数据库)中创建一个架构。假设您对 AWS Glue 有点熟悉。

  2. 创建一个 Glue 作业,将 JSON 转换为您喜欢的格式(镶木地板),该格式使用转换步骤使用 Rationalize 类展平数据 - https://aws.amazon.com/blogs/big-data/simplify-querying-nested- json-with-the-aws-glue-relationalize-transform/ 并写入 parquet 格式

  3. 为新的展平数据创建爬虫并在 aws 胶水中创建表

  4. 使用 Athena 或 AWS Quick Sight 或您最喜欢的 BI 工具查询镶木地板数据

于 2018-06-23T21:27:29.720 回答
0

我遇到了类似的问题,并按照文档为 JSON 文件创建了一个分类器。

当我执行爬虫时,我添加了分类器,就像魔术一样,所有 JSON 结构都在一个关系模型中,以存储在 Redshift 集群数据库中。

于 2019-05-02T16:29:01.717 回答