2016-01-11 5 views
1

Я пытаюсь сохранить данные в кассандре, которая содержит отметки времени в микросекундах. Документы Кассандры говорят, что тип данных «timestamp» может хранить миллисекунды с эпохи, но несколько сообщений в Интернете, по-видимому, подразумевают, что cassandra может изначально хранить микросекундные временные метки.Как хранить отметки времени микросекунды в кассандре?

Каков наилучший способ хранения микросекундного времени в кассандре? Должен ли я просто оставить часть даты и хранить долго?

Я пытаюсь боль в columsn, который выглядит следующим образом: 2015-11-18 07: 30: 46,700824

Я получаю следующее сообщение об ошибке:

ErrorMessage код = 2200 [Неверный запрос] message = "невозможно принудить" 2015-11-18 07: 30: 18.261543 'на форматированную дату (длинный) "

Отмена импорта на запись № 1. Ранее вставленные записи все еще присутствуют, и некоторые записи после этого также могут присутствовать.

Моя версия cassandra: [cqlsh 5.0.1 | Кассандра 2.1.11 | CQL spec 3.2.1 | Native протокол v3]

EDIT: Вот пример микросекунды путаницы в собственных Docs Кассандры:

«CAS и новые возможности CQL, такие как DROP COLUMN предположить, что сотовые временные метки являются микросекунд-С-эпохи»

https://docs.datastax.com/en/upgrade/doc/upgrade/cassandra/upgradeChangesC_c.html

Другой: https://issues.apache.org/jira/browse/CASSANDRA-8297

EDIT2: Я должен упомянуть, что я намерен запросить эту U петь искру. Из того, что я понимаю, искра анализирует свой собственный вкус sql и переводит его в cassandra (хотя я использую CassandraContext в zeppelin). Что-нибудь, что может помочь или помешать моему поиску микросекундных timestmaps?

+0

Здесь есть два разных понятия: сохранение метки времени в столбце «и тег метки времени», который Cassandra использует внутри (в основном для синхронизации узлов и вставки/upsert). –

ответ

1

Вы можете использовать bigint или timeuuid. Тип 1 uuid имеет точность 100 нс, поэтому он может вас покрыть. Некоторые утилиты, библиотеки, удобные функции могут не дать вам то, что вам нужно, поэтому будьте готовы написать некоторые функции uuid.

+0

Интересно. Требуются ли временные ограничения для уникальных строк? Потому что, по моим данным, их может не быть. – Shahbaz

+0

«Нужны ли временные уступы, чтобы быть уникальными по строкам?» - Нет, если я правильно понимаю ваш вопрос. Если использовать его как ключ раздела или ключ строки с данными, находящимися в одном разделе, он будет. Если вам это нужно, как правило, вы можете использовать часть точности, чтобы обеспечить уникальность. Он также включает в себя адрес mac (или ip address + jvm static random number, в зависимости от реализации) сервера, генерирующего его, который предоставляет дополнительные. Хотя вы могли бы ограничить до 10 уникалов на каждые микросекунды за сервер таким образом. –

+0

Я имею в виду, что с объемом данных, который у меня есть, есть _many_ экземпляры, где несколько записей имеют одну и ту же метку времени. «UUID» специально предназначен для уникальных идентификаторов (не относящихся к кассандре). Интересно, буду ли я подписываться на сюрпризы позже, если я использую timeuuid для хранения моих данных времени. – Shahbaz