Как проверить в CQL, что все строки успешно скопированы из CSV в таблицу Cassandra? *** операторы SELECT не возвращают все результаты - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь понять Кассандру, играя с опубликованным набором данных c. Я вставил 1,5 миллиона строк из CSV в таблицу на своем локальном экземпляре Cassandra, с REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1}
Таблица была создана с одно поле как ключ раздела и еще один в качестве первичного ключа

У меня было подтверждение, что обработано 1,5 млн строк. COPY Completed

Но когда я запускаю SELECT или SELECT COUNT (*) в таблице, я всегда получаю максимум 182 строки.  Во-вторых, число записей, возвращаемых с кластеризованными столбцами, кажется, больше, чем в отдельных столбцах , что для меня не имеет смысла. Чего мне не хватает в архитектуре и запросах Cassandra?

Наконец, я также попытался прочитать ту же таблицу Cassandra из оболочки pyspark, и, кажется, она также читает 182 строки.

1 Ответ

0 голосов
/ 19 апреля 2020

Ваш первичный ключ - PRIMARY KEY (state, severity). С этим определением первичного ключа все строки для аварий в одном и том же состоянии одинаковой серьезности будут перезаписывать друг друга. Вероятно, в вашем наборе данных есть только 182 различных комбинации (состояние, серьезность).

Вы можете добавить еще один столбец кластеризации для записи уникальной аварии, например, cras_id

В этом блоге подчеркивается важность первичного ключа, и есть несколько примеров: https://www.datastax.com/blog/2016/02/most-important-thing-know-cassandra-data-modeling-primary-key

...