Составной ключ Cassandra CQL3 не написан редуктором Hadoop

Я использую Cassandra 1.2.8 и имею несколько заданий Hadoop MapReduce, которые читают строки из некоторых таблиц CQL3 и записывают результат обратно в другие таблицы CQL3.

Если выходные таблицы CQL3 содержат составной ключ, значения полей составного ключа не записываются редуктором - вместо этого я вижу пустые значения для этих полей при выполнении запроса выбора в cqlsh. Если первичный ключ не является составным, все работает правильно.

Пример выходной таблицы CQL3 с составным ключом:

CREATE TABLE events_by_type_with_source (
    event_type_id ASCII,
    period ASCII,
    date TIMESTAMP,
    source_name ASCII,
    events_number COUNTER,
    PRIMARY KEY((event_type_id, period), date, source_name)
);

Мой выходной запрос: UPDATE events_by_type_with_source SET events_number = events_number +?

Моя функция редуктора выглядит так:

public void reduce(BytesWritable key, Iterable<BytesWritable> values, Context context) {
     ...
    private final Map<String, ByteBuffer> keys = new HashMap<>();
    ...
    keys.put(COLUMN_EVENT_TYPE_ID, eventTypeIdByteBuffer);
    keys.put(COLUMN_SOURCE_NAME, sourceNameByteBuffer);
    keys.put(COLUMN_DATE, dateByteBuffer);
    keys.put(COLUMN_PERIOD, periodByteBuffer);
    ...
    context.write(keys, Arrays.asList(countByteBuffer));

}

Результат:

cqlsh:keyspace1> select * from dd_events_by_type_with_source ;

 event_type_id | period | date                     | source_name | events_number
---------------+--------+--------------------------+-------------+---------------
               |        | 2013-08-01 00:00:00+0000 |           A |            24
               |        | 2013-08-26 00:00:00+0000 |           A |            24
               |        | 2013-08-27 00:00:00+0000 |           A |            24
               |        | 2013-08-27 08:00:00+0000 |           A |            24

Как вы можете видеть, поля event_type_id и period являются пустыми, хотя я поместил непустые допустимые строки ASCII в редуктор.

Есть идеи, как это исправить?

1 ответ

Это известная проблема в Кассандре до 1.2.10: https://issues.apache.org/jira/browse/CASSANDRA-5949

Исходя из предыдущего графика выпуска, я ожидаю, что версия 1.2.10 будет доступна ближе к концу сентября 2013 года. Эта проблема, по-видимому, отсутствует в Cassandra 2.0.

Другие вопросы по тегам