복붙노트

[HADOOP] Cassandra CQL3 복합 키가 Hadoop 감속기로 작성되지 않았습니다.

HADOOP

Cassandra CQL3 복합 키가 Hadoop 감속기로 작성되지 않았습니다.

나는 Cassandra 1.2.8을 사용하고 있으며 일부 CQL3 테이블의 행을 읽고 결과를 다른 CQL3 테이블에 다시 쓰는 몇 가지 Hadoop MapReduce 작업이 있습니다.

출력 CQL3 테이블에 복합 키가 포함 된 경우 복합 키 필드의 값은 축소 기가 기록하지 않습니다. 대신 cqlsh에서 select 쿼리를 수행하는 동안 해당 필드에 빈 값이 표시됩니다. 기본 키가 합성이 아닌 경우 모든 것이 올바르게 작동합니다.

합성 키가있는 출력 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 및 기간 필드는 공백입니다. 공백이 아닌 유효한 ASCII 문자열을 감속기에 넣었습니다.

어떤 문제 해결 방법?

해결법

  1. ==============================

    1.이것은 이전 1.2.10 Cassandra의 알려진 문제점입니다 : https://issues.apache.org/jira/browse/CASSANDRA-5949

    이것은 이전 1.2.10 Cassandra의 알려진 문제점입니다 : https://issues.apache.org/jira/browse/CASSANDRA-5949

    이전 릴리스 일정에 따라 2013 년 9 월 말에 1.2.10을 사용할 수 있습니다.이 문제는 Cassandra 2.0에는 존재하지 않습니다.

  2. from https://stackoverflow.com/questions/18566882/cassandra-cql3-composite-key-not-written-by-hadoop-reducer by cc-by-sa and MIT license