将复杂JSON推入Cassandra表的现有工具

将复杂JSON推入Cassandra表的现有工具,cassandra,Cassandra,我有一个复杂的JSON文档作为输入,它包含许多字段、嵌套字段、数组等。 我想将这个JSON文档直接推送到我的Cassandra表中,以避免被迫编写自定义代码来进行简单的映射(这可能会随着时间的推移而改变) 是否存在一个通用工具来实现这一点 重要假设: JSON文档中的字段名称在整个文档中可以是唯一的,以使其更简单 JSON文档中每个字段的嵌套级别不一定与Cassandra表中的相同 示例 JSON文档摘录: "userID": "john.doe@gmail.c

我有一个复杂的JSON文档作为输入,它包含许多字段、嵌套字段、数组等。 我想将这个JSON文档直接推送到我的Cassandra表中,以避免被迫编写自定义代码来进行简单的映射(这可能会随着时间的推移而改变)

是否存在一个通用工具来实现这一点

重要假设:

  • JSON文档中的字段名称在整个文档中可以是唯一的,以使其更简单
  • JSON文档中每个字段的嵌套级别不一定与Cassandra表中的相同
示例

JSON文档摘录:

"userID": "john.doe@gmail.com",
"isReg": true,
"infos": {
    "countryIds": [
        {
            "id": 111,
            "country": "UK"
        },
        {
            "id": 222,
            "country": "France"
        },
        {
            "id": 333,
            "country": "Sweden"
        },
        {
            "id": 444,
            "country": "Germany"
        }
    ],
    "pseudo": "abc12345",
    "name": {
        "firstName": "John",
        "lastName": "Doe",
    }, (...)
卡桑德拉表

CREATE TYPE IF NOT EXISTS country_id (
    id int,
    country text
);

CREATE TYPE IF NOT EXISTS name (
    first_name text,
    last_name text
);

CREATE TABLE IF NOT EXISTS users(  
    user_id text,
    is_reg boolean,
    country_ids SET<FROZEN<country_id>>,
    pseudo text,
    first_name text,
    last_name text,
    PRIMARY KEY (user_id)
);
如果不存在国家/地区id,则创建类型(
id int,
国家文本
);
如果名称不存在,则创建类型(
名字文本,
姓氏文本
);
如果不存在用户,则创建表(
用户id文本,
是布尔值,
国家/地区ID集,
伪文本,
名字文本,
姓氏文本,
主键(用户id)
);

这方面没有现成的解决方案,需要定制代码才能实现您的需求

如果能够将数据发布到Kafka,则可以使用将字段映射到CQL列,并将其作为接收器推送到Cassandra。干杯