Сбой создания таблицы 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 '<'

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


person G Gordon Worley III    schedule 18.02.2014    source источник


Ответы (1)


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

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

<collection-type> ::= list '<' <native-type> '>'
                    | set  '<' <native-type> '>'
                    | map  '<' <native-type> ',' <native-type> '>'
person Mikhail Stepura    schedule 18.02.2014
comment
ты прав. после проверки я понял, что они были удалены, когда они были скопированы из веб-интерфейса DSE, который не смог избежать < и >, поэтому они были проглочены как теги html. - person G Gordon Worley III; 18.02.2014