Создание таблицы Cassandra завершается неудачно с ошибочным запросом: несоответствующий ввод

Я создал трекер пространства клавиш Cassandra:

CREATE KEYSPACE tracker WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': '3'
};

И тогда я могу успешно создать таблицу в этом пространстве ключей:

cqlsh:tracker> CREATE TABLE tracker.click_windows (
           ...   visitor_id text,
           ...   created_at timeuuid,
           ...   click_id text,
           ...   ended_at timeuuid,
           ...   expires_at timeuuid,
           ...   processed_at timeuuid,
           ...   window_size int,
           ...   PRIMARY KEY (visitor_id, created_at)
           ... ) WITH CLUSTERING ORDER BY (created_at DESC) AND
           ...   bloom_filter_fp_chance=0.010000 AND
           ...   caching='KEYS_ONLY' AND
           ...   comment='' AND
           ...   dclocal_read_repair_chance=0.000000 AND
           ...   gc_grace_seconds=864000 AND
           ...   read_repair_chance=0.100000 AND
           ...   replicate_on_write='true' AND
           ...   populate_io_cache_on_flush='false' AND
           ...   compaction={'class': 'SizeTieredCompactionStrategy'} AND
           ...   compression={'sstable_compression': 'SnappyCompressor'};

Но когда я иду, чтобы добавить следующее семейство таблиц / столбцов, я получаю сообщение об ошибке:

cqlsh> CREATE TABLE tracker.clicks (
   ...   id text PRIMARY KEY,
   ...   created_at timeuuid,
   ...   data map
   ... ) WITH
   ...   bloom_filter_fp_chance=0.010000 AND
   ...   caching='ALL' AND
   ...   comment='' AND
   ...   dclocal_read_repair_chance=0.000000 AND
   ...   gc_grace_seconds=864000 AND
   ...   read_repair_chance=0.100000 AND
   ...   replicate_on_write='true' AND
   ...   populate_io_cache_on_flush='false' AND
   ...   compaction={'class': 'SizeTieredCompactionStrategy'} AND
   ...   compression={'sstable_compression': 'SnappyCompressor'};
Bad Request: line 5:0 mismatched input ')' expecting '<'

Я обнаружил некоторые признаки того, что это может быть проблемой версии CQL, но когда я запускаю cqlsh с --cql3 это все еще происходит. Я не вижу ничего очевидного в этих двух, которые настолько различны, что один работает, а другой нет. У меня также есть дополнительные, которые не работают, как

cqlsh> CREATE TABLE tracker.session_hits (
   ...   session_id timeuuid,
   ...   hit_id timeuuid,
   ...   click_id text,
   ...   created_at timeuuid,
   ...   data map,
   ...   visitor_id text,
   ...   window_ids list,
   ...   PRIMARY KEY (session_id, hit_id)
   ... ) WITH CLUSTERING ORDER BY (hit_id DESC) AND
   ...   bloom_filter_fp_chance=0.010000 AND
   ...   caching='KEYS_ONLY' AND
   ...   comment='' AND
   ...   dclocal_read_repair_chance=0.000000 AND
   ...   gc_grace_seconds=864000 AND
   ...   read_repair_chance=0.100000 AND
   ...   replicate_on_write='true' AND
   ...   populate_io_cache_on_flush='false' AND
   ...   compaction={'class': 'SizeTieredCompactionStrategy'} AND
   ...   compression={'sstable_compression': 'SnappyCompressor'};
Bad Request: line 8:17 mismatched input ',' expecting '<'

Предложения?

1 ответ

Решение

Вы должны параметризовать определения ваших коллекций (карта / список)

http://cassandra.apache.org/doc/cql3/CQL.html

<collection-type> ::= list '<' <native-type> '>'
                    | set  '<' <native-type> '>'
                    | map  '<' <native-type> ',' <native-type> '>'
Другие вопросы по тегам