TimeUUID с Cassandra и Lazyboy

Я пытаюсь вставить столбец с ключами UUID1, чтобы иметь возможность сортировать их по дате. Я всегда получаю сообщение об ошибке «cassandra.ttypes.InvalidRequestException: InvalidRequestException (почему = «UUID должны быть ровно 16 байт»)», и я не знаю, почему.

Вот код, выдающий эту ошибку:

from lazyboy import *
from lazyboy.key import Key
import uuid

class TestItemKey(Key):
    def __init__(self, key=None):
        Key.__init__(self, 'MXstore', 'TestCF', key)

class TestItem(record.Record):
    def __init__(self, *args, **kwargs):
        record.Record.__init__(self, *args, **kwargs)
        self.key = TestItemKey(uuid.uuid1().bytes)

connection.add_pool('MXstore', ['localhost:9160'])

tmp = {'foo' : 'bar'}
tmps = TestItem(tmp).save()

Что я сделал не так ? Я использую lazyboy 0.705 с Cassandra 0.6.4. Конфигурация хранилища такова:

<Keyspaces>
    <Keyspace Name="MXstore">
        <ColumnFamily Name="TestCF" CompareWith="TimeUUIDType" />

        <ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy>
        <ReplicationFactor>3</ReplicationFactor>
        <EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch>
    </Keyspace>
</Keyspaces>

person Pierre    schedule 10.08.2010    source источник
comment
какова длина uuid.uuid1().bytes?   -  person Buhake Sindi    schedule 10.08.2010
comment
len(uuid.uuid1().bytes) = 16, type(uuid.uuid1().bytes) = ‹type 'str'›. 16 байт, как и ожидалось, я думаю.   -  person Pierre    schedule 10.08.2010


Ответы (1)


Имя столбца должно иметь uuid версии 1. Похоже, ваш ключ — это uuid версии 1.

person Schildmeijer    schedule 10.08.2010