10

呵呵,我用

cf.insert(uuid.uuid1().bytes_le, {'column1': 'val1'}) (皮卡萨)

为 Cassandra 创建 TimeUUID,但出现错误

InvalidRequestException: 
InvalidRequestException(why='UUIDs must be exactly 16 bytes')

它不适用于

uuid.uuid1()
uuid.uuid1().bytes
str(uuid.uuid1())

任何一个。

创建与 CompareWith="TimeUUIDType" 标志一起使用的有效 TimeUUID 的最佳方法是什么?

谢谢,
亨里克

4

2 回答 2

9

看起来您使用 uuid 作为行键而不是列名。

' compare_with: TimeUUIDType ' 属性指定列名将与使用 TimeUUIDType 进行比较,即它告诉 Cassandra 如何对进行排序以进行切片操作

您是否考虑过使用任何高级 python 客户端?例如TradedgyLazy BoyTelephusPycassa

于 2010-07-13T18:44:18.293 回答
4

您必须确保您的列族架构接受 UUID 作为键。您的代码将使用创建为(使用 cassandra-cli)的列族:

create column family MyColumnFamily
  with column_type = 'Standard'
  and comparator = 'AsciiType'
  and default_validation_class = 'BytesType'
  and key_validation_class = 'TimeUUIDType';

要向此 CF 添加值:

import pycassa
pool = pycassa.ConnectionPool('Keyspace1')
cf = pycassa.ColumnFamily(pool, 'MyColumnFamily')
cf.insert(uuid.uuid1(), {'column1': 'val1'})
于 2012-01-03T17:17:07.373 回答