将 JSON 属性值动态映射到另一个 JSON 并存储到 Cassandra 数据库

问题描述

我是新的 JSON 和 Cassandra 部分,我正在做一个 POC,我在其中接收 JSON 对象流。我有一个配置 JSON,它就像传入的 JSON 对象的子集。现在我正在做的是我有方法可以从 JSON 对象中提取所需的字段并映射到如下所示的 POJO 对象

@Table(keyspace = KEYSPACE_NAME,name = DATA_HISTORY_TABLE_NAME,readConsistency = QUORUM,writeConsistency = QUORUM,caseSensitiveKeyspace = false,caseSensitiveTable = false)
public class Table1 implements Serializable {
    @PartitionKey
    @Column(name = "FirsTNAME")
    private String firstName;

    @Column(name = "USER_ID")
    private String userId;

    @Column(name = "TRASACTION")
    private double transactionAmount;

    @Column(name = "CREATED_TIMESTAMP")
    private Date createdDateTime;

    @Column(name = "CREATED_DATE")
    private LocalDate createdDate;
}

现在一切都很顺利。我试图使这种方式更加动态,我将配置文件存储在数据库中,该文件将在运行时通过 API 调用提取配置文件结构示例如下所示,我可以使用 JSON 路径设置多个条件

{
    "Condition1": {
        "path": ["JSON PATH OF VALUE I WANT TO FETCH"]
    }
}

示例条件:

{
    "Condition1": {
        "path": ["firstName"]
    },"Condition2": {
        "path": ["userID"]
    }
}

传入的 JSON 可以有任何值,但我想从传入的 JSON 对象流中提取以上两个值并存储到 Cassandra 数据库。我想到了一个解决方案,将传入的 JSON 对象转换为 java POJO 类并提取信息,但由于这是一个流平台,因此可能会杀死 JVM。请建议我动态映射 JSON 属性的任何有效方法。提前致谢。

解决方法

既然您有流媒体用例,请查看 DataStax Apache Kafka Connector

使用 Kafka 连接器,您可以map the JSON fields to CQL columns。然后来自流的数据将被写入 Cassandra。干杯!