将单个udt对象转换为cassandra表中的udt列表

uz75evzq  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(407)

我在cassandra中有两个用户定义的类型。第一种是将第二个对象用作其中的冻结对象。

CREATE TYPE my_keyspace.test (
    testid text,
    testdate text,
    testdata frozen<testdata>
);

CREATE TYPE my_keyspace.testdata (
    subject text,
    metadata text

);

现在我的要求是将这个对象转换为udt列表。像这样的

CREATE TYPE my_keyspace.test (
    testid text,
    testdate text,
    testdata list<frozen<testdata>>
);

是否可以将单个对象更新为cassandra中的对象列表。哪些选项可用于更新模式。

sqserrrh

sqserrrh1#

唯一的方法是使用 ALTER TYPE ,并开始使用此新字段,使用一些代码迁移现有数据。cassandra不允许更改现有字段的类型,也不能从udt中删除字段。所以你的类型应该是这样的:

CREATE TYPE my_keyspace.test (
    testid text,
    testdate text,
    testdata frozen<testdata>
    testdata_lst list<frozen<testdata>>
);

可以将现有数据迁移到列表中,然后设置为 null 释放空间。

相关问题