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 BoyTelephusまたはPycassa

于 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 に答える