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

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

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

  1. CREATE TYPE my_keyspace.test (
  2. testid text,
  3. testdate text,
  4. testdata frozen<testdata>
  5. );
  6. CREATE TYPE my_keyspace.testdata (
  7. subject text,
  8. metadata text
  9. );

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

  1. CREATE TYPE my_keyspace.test (
  2. testid text,
  3. testdate text,
  4. testdata list<frozen<testdata>>
  5. );

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

sqserrrh

sqserrrh1#

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

  1. CREATE TYPE my_keyspace.test (
  2. testid text,
  3. testdate text,
  4. testdata frozen<testdata>
  5. testdata_lst list<frozen<testdata>>
  6. );

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

相关问题