Прежде всего, упомянутая документация относится к очень старой версии драйвера Java DataStax, вы должны обновить ее до version 3.0.0.
При этом драйвер DataStax Java поставляется с полезным классом, com.datastax.driver.core.utils.UUIDs
. Он имеет три полезных метода для работы с UUID с временным основанием:
timeBased()
; создает новый UUID на основе времени для текущей метки времени; временные метки, сгенерированные этим методом, могут быть вставлены в Cassandra как значения timeuuid
.
startOf(long)
и endOf(long)
: эти методы обеспечивают соответственно наименьшие и наивысшие возможные UUID для заданной временной метки. Они подходят главным образом для запроса диапазона значений timeuuid
.
В вашем случае, однако, похоже, что вы переносите данные из РСУБД с фиксированными отметками времени. Я полагаю, что вы последовательно использовать startOf(long)
перенести данные:
java.sql.Timestamp tp = ...;
UUID uuid = UUIDs.startOf(tp.getTime());
В любом случае не пытайтесь создавать такие UUID, вручную, как способ Cassandra сортирует timeuuid
значения не совместимы с UUID.comapreTo()
.
Я не использую драйвер DAta Stax, я использую бережливый клиент, что я могу сделать в этом случае? –
В этом случае поместите диск-драйвер DataStax в свой путь к классам, чтобы использовать класс 'UUIDs'. – adutra
@VinodJayachandran вы должны действительно рассмотреть возможность использования более нового драйвера. Thrift RPC по умолчанию отключен от Cassandra 2.2. – Aaron