2015-04-03 2 views
2

У меня есть таблица с миллионами записей, поэтому мне нужно группировать и суммировать значения на основе запроса.Как заполнить (суммировать) в Apache Cassandra?

Я знаю, что cassandra не поддерживает, поэтому мне нужно принести миллионы строк в память и вычислить ее на стороне клиента (в случае Java)?

+1

Вы изучали использование MapReduce для этого? –

ответ

1

Один из вариантов стоит посмотреть на spark-cassandra-connector. Там есть simple tutorial вы можете пройти через это демонстрирует, как сделать «подсчет» и «сумма» от Кассандры таблицы:

val rdd = sc.cassandraTable("test", "kv") 
println(rdd.count) 
println(rdd.map(_.getInt("value")).sum) 

Хотя библиотека написана на Скале, есть java API вы можете использовать, а также , Кроме того, вам не нужно настраивать искровой кластер, чтобы он работал, поскольку вы можете использовать искру, встроенную в ваш клиент, без какой-либо дополнительной настройки. Хотя ваши потребности растут, вы, возможно, захотите рассмотреть вопрос об установке некоторых искровых работников.

1

Может захотеть сохранить счетчик, который вы увеличиваете при добавлении записей, чтобы иметь сумму, предварительно вычисленную.

CREATE TABLE blargs_sum (
    sum counter, 
    blarg varchar, 
    PRIMARY KEY (blarg) 
); 

---- 

UPDATE blargs_sum SET sum = sum + 1 WHERE blarg='Rafael'; 

Другой вариант - сделать это с помощью легкой весовой операции при вставке, возможно, даже со статическим столбцом. Но это означало бы, что вы получите общее количество разделов, а не глобальное. Здесь можно найти пример: http://www.datastax.com/dev/blog/cql-in-2-0-6

BEGIN BATCH 
    UPDATE bills SET balance = -208 WHERE user='user1' IF balance = -8; 
    INSERT INTO bills (user, expense_id, amount, description, paid) 
      VALUES ('user1', 2, 200, 'hotel room', false); 
    APPLY BATCH; 
+0

Будет ли это обновление работать, избегая условий гонки? Когда добавляется запись, увеличивается суммарный агрегат и агрегат дня, но этот агрегат будет вычисляться в параллельных/параллельных запросах. – sujaisd

Смежные вопросы