У меня есть таблица/columnfamily в Cassandra 3.7 с сенсортатами.Повторяющиеся строки/столбцы для одного и того же первичного ключа в Cassandra
CREATE TABLE test.sensor_data (
house_id int,
sensor_id int,
time_bucket int,
sensor_time timestamp,
sensor_reading map<int, float>,
PRIMARY KEY ((house_id, sensor_id, time_bucket), sensor_time)
)
Теперь, когда я выбираю из этой таблицы, я нахожу дубликаты для того же первичного ключа, что-то, что я думал, было невозможно.
cqlsh:test> select * from sensor_data;
house_id | sensor_id | time_bucket | sensor_time | sensor_reading
----------+-----------+-------------+---------------------------------+----------------
1 | 2 | 3 | 2016-01-02 03:04:05.000000+0000 | {1: 101}
1 | 2 | 3 | 2016-01-02 03:04:05.000000+0000 | {1: 101}
Я думаю, что часть проблемы заключается в том, что эти данные, как было написано «вживую» с помощью Java и драйвер Datastax Java, и он был загружен вместе с историческими данными из другого источника, используя sstableloader.
Независимо от того, это должно быть невозможно. У меня нет возможности соединиться с наследием cassandra-cli в этом кластере, возможно, это сказало бы мне то, что я не вижу, используя cqlsh.
Итак, вопросы:
* Есть ли это в известных обстоятельствах?
* Можно ли читать более сырые данные с помощью cqlsh? Укажите время записи этих двух строк. функция writetime() не может работать с первичными ключами или коллекциями, и это все, что у меня есть.
Спасибо.
Update:
Это то, что я пытался, от комментариев, ответов и других источников
* выбирающий используя blobAsBigInt дает ту же большое число для всех идентичных строк
* Подключение с помощью Кассандры-кли, после того, как возможность бережливости, возможно, но чтение таблицы - нет. Он не поддерживается после 3.x
* сбрасывание с использованием sstabledump продолжается, но ожидается, что потребуется еще неделя или две;)
вы можете проверить данные с cassandra-cli? – Nick
Нет, cassandra-cli не поддерживается в 3.x. Я мог бы сделать sstabledump, но файлы данных огромны, и этот инструмент не предлагает фильтрации. –
Я считаю, что sensor_time отличается для обеих строк, но усекается и отображается так, как если бы время было таким же. Вы также можете спросить в списке рассылки Cassandra. – Nick