将嵌套的 json 插入到 cassandra 中

我试图将这个嵌套对象插入到 cassandra 数据库中,但无法弄清楚如何为此设计表。我希望这个对象的所有数据都存储在 cassandra 中。


下面我粘贴了我试图插入的 json。


有什么建议?


{

  "status": "success",

  "data": {

    "resultType": "vector",

    "result": [

      {

        "metric": {

          "__name__": "up",

          "env": "demosite",

          "instance": "localhost:9100",

          "job": "node"

        },

        "value": [

          1553849977.349,

          "1"

        ]

      },

      {

        "metric": {

          "__name__": "up",

          "instance": "ub-lab-server:9090",

          "job": "prometheus"

        },

        "value": [

          1553849977.349,

          "1"

        ]

      }

    ]

  }

}


慕哥9229398
浏览 181回答 1
1回答

宝慕林4294392

有多种方法可以做到这一点。如果您的用例只是将 JSON 存储为字符串,只需将整个 JSON 作为 blob 序列化为单个列创建一个表:CREATE TABLE IF NOT EXISTS my_table(&nbsp; ID <text/bigint>&nbsp; DATA text,&nbsp; CREATEDATE timestamp)如果要将所有嵌套属性表示为单独的列,则必须从下往上开始。即首先为每个嵌套字段创建用户定义类型。参考你的 json ,一个例子是:CREATE TYPE metric (&nbsp; &nbsp; &nbsp; name text,&nbsp; &nbsp; &nbsp; env text,&nbsp; &nbsp; &nbsp; instance text,&nbsp; &nbsp; &nbsp; job text);CREATE TYPE value(&nbsp; &nbsp; &nbsp; field1 text,&nbsp; &nbsp; &nbsp; field2 text);创建基本 UDT 后,从创建复合 UDT 开始,引用基本 UDT:CREATE TYPE result(&nbsp; metric metric,&nbsp; value value,);CREATE TYPE data(&nbsp; resultType text,&nbsp; result set<result>,);&nbsp; &nbsp;&nbsp;然后最后引导你的表如下:CREATE TABLE IF NOT EXISTS my_table (&nbsp; ID <text/bigint>&nbsp; status data)在根据查询和存储用例决定主键/分区键时要小心。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python