Как я могу обновить столбец до определенного значения в таблице cassandra? - PullRequest
0 голосов
/ 26 июня 2019

Привет, у меня есть стол для кассандры.В моей таблице около 200 записей.позже я изменил таблицу, чтобы добавить новый столбец с именем бюджет, который имеет тип логического.Я хочу установить значение по умолчанию для этого столбца.как должен выглядеть cql.

Я пытаюсь выполнить следующую команду, но она не сработала

cqlsh:Openmind> update mep_primecastaccount set budget = true ;
SyntaxException: line 1:46 mismatched input ';' expecting K_WHERE

благодарю за любую помощь, спасибо

Ответы [ 2 ]

4 голосов
/ 26 июня 2019

Любая операция, которая потребовала бы считывания всего кластера перед записью, не поддерживается (поскольку она не будет работать в масштабе, для которого предназначена Cassandra). Вы должны предоставить раздел и ключ кластеризации для оператора обновления. Если есть только 200 записей быстрого скрипта Python или может сделать это для вас. Выполните SELECT * FROM mep_primecastaccount и выполните итерацию по ResultSet. Для каждой строки выдают обновление. Если у вас намного больше записей, вы, возможно, захотите использовать spark или hadoop, но для такой маленькой таблицы, как этот, быстрый скрипт может это сделать.

0 голосов
/ 27 июня 2019

Крис ответил правильно - не существует эффективного или надежного способа изменить значение столбца для каждой строки в базе данных. Но для таблицы из 200 строк, которая не изменяется параллельно, это на самом деле очень легко сделать.

Но есть и другой способ, который может работать и с таблицей с миллиардами строк:

Вы можете обработать понятие «значение по умолчанию» в вашем клиентском коде. Существующие коды вообще не будут иметь значения для «бюджета»: это не будет ни истиной, ни ложью, а скорее будет полным отсутствием (a.k.a. «ноль»). Ваш клиентский код может, когда он читает строку с отсутствующим значением «бюджета», заменить ее на какое-либо значение по умолчанию по своему выбору - например, «истина».

...