我有一个空白的Cassandra 2.1数据存储,我正试图以编程方式填充它,从Clojure的键空间向下,使用Alia和Hayt。它被用作从客户端接收JSON数据的web服务端点后面的数据存储。
我希望能够解析传入的数据到Clojure实例,稍微改变数据(添加另一个键,值对映射,例如),并将数据插入到数据存储中,这样我就可以检索它作为一个Clojure实例。
一切都像我期望的那样工作,除了我无法创建一个合适的列,Cassandra很乐意将我的nippy编码的数据放入其中!
是否有我错过的东西(我的代码目前)?
(def alia-cluster (cluster {:contact-points ["127.0.0.1"]}))
(def session (connect alia-cluster))
(execute session
(create-keyspace :ks
(if-not-exists)
(with {:replication {:class "SimpleStrategy"
:replication_factor 1}})))
(execute session
(use-keyspace :ks))
(execute session
(create-table :d
(if-not-exists)
(column-definitions [[:k :XXXXX]
[:primary-key :k]])))
(set-nippy-collection-encoder!)
(set-nippy-decoder!)
我已经尝试了几乎所有的XXXX -但似乎没有工作!
如有任何建议,不胜感激。
干杯!
我不认为:bytes是CQL中的有效类型,它应该是:blob。也就是说,在这个漂亮的编解码器中有一个bug(被标记为实验性的)。它现在是固定的,如果你拉2.5.2这应该工作:
(use 'qbits.alia)
(use 'qbits.alia.codec.nippy)
(def c (cluster {:contact-points ["localhost"]}))
(def s (connect c))
(set-nippy-decoder!)
(set-nippy-collection-encoder!)
(execute s "use ks;")
(execute s "insert into d (k) values (?);" {:values [[1 2 3]]})
(execute s "select * from d;")
(这应该也可以正常工作)
欢呼