我试图将这个嵌套对象插入到 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" ] } ] }}
1 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
有多种方法可以做到这一点。
如果您的用例只是将 JSON 存储为字符串,只需将整个 JSON 作为 blob 序列化为单个列创建一个表:
CREATE TABLE IF NOT EXISTS my_table(
ID <text/bigint>
DATA text,
CREATEDATE timestamp
)
如果要将所有嵌套属性表示为单独的列,则必须从下往上开始。即首先为每个嵌套字段创建用户定义类型。参考你的 json ,一个例子是:
CREATE TYPE metric (
name text,
env text,
instance text,
job text
);
CREATE TYPE value(
field1 text,
field2 text
);
创建基本 UDT 后,从创建复合 UDT 开始,引用基本 UDT:
CREATE TYPE result(
metric metric,
value value,
);
CREATE TYPE data(
resultType text,
result set<result>,
);
然后最后引导你的表如下:
CREATE TABLE IF NOT EXISTS my_table (
ID <text/bigint>
status data
)
在根据查询和存储用例决定主键/分区键时要小心。
添加回答
举报
0/150
提交
取消