首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模式未完全从Thrift协议转换为CQL协议

模式未完全从Thrift协议转换为CQL协议
EN

Stack Overflow用户
提问于 2016-11-01 09:27:47
回答 1查看 81关注 0票数 1

我正在尝试在我的项目中从使用pycassa转移到原生协议(这将使我们能够升级cassandra的版本)。我的模式是使用pycassa定义的,所以它使用紧凑存储创建了一个列族,它有3列,它们不是复合主键的一部分(我知道这是CQL协议不允许的)。

我当前的Cassandra集群的版本是2.0.17。当我使用thrift协议"show schema“时,模式是:

代码语言:javascript
复制
create column family store
    with column_type = 'Standard'
    and comparator = 'CompositeType(org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.LongType),org.apache.cassandra.db.marshal.AsciiType,org.apache.cassandra.db.marshal.AsciiType)'
    and default_validation_class = 'DoubleType'
    and key_validation_class = 'AsciiType'
    and column_metadata = [
       {column_name : 'something1',
       validation_class : AsciiType},
      {column_name : 'something2',
      validation_class : AsciiType}]

但是,当我检查本机协议上的模式时,它缺少"column3“和"value”列。它的结果如下:

代码语言:javascript
复制
CREATE TABLE store (
  key ascii,
  column1 bigint,
  column2 ascii,
  something1 ascii,
  something2 ascii,
  PRIMARY KEY ((key), column1, column2)
) WITH COMPACT STORAGE AND
CLUSTERING ORDER BY (column1 DESC, column2 ASC)

现在,由于这个差异,我不能在客户端从pycassa转换到本机协议。我还没有找到任何方法来克服这个问题,并确保本机协议能看到正确的模式。你能给我一些建议来解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-02 12:33:36

简而言之,alter表添加了缺少的列。

看起来你没有任何用于value或column3的列元数据,我不确定它们是什么类型,如果它们只是ascii,你应该能够做到以下几点:

代码语言:javascript
复制
ALTER TABLE store ADD column3 ascii;
ALTER TABLE store ADD value ascii;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40352934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档