我正在学习如何使用风暴的三叉戟与Cassandra2.0.5,风暴版本0.9.0.1。我还使用com.hmsonline storm cassandra 0.4.0-rc4 contrib。
我的目标是简单地将一些文本行插入到具有id(int)、name(text)和句子(text)列的表中。id和name是主键。
这个 partitionPersist
需要 StateUpdater
,为此我使用 com.hmsonline.storm.cassandra.trident.CassandraUpdater<K, C, V>
. 但从它看起来只有一个键作为输入,而不是两个(我需要id和name)。元组Map器( TridentTupleMapper
)也使用一个键:
TridentTupleMapper<K, C, V> tupleMapper
也许我遗漏了一些东西,但是如何将多个列定义为键呢?
1条答案
按热度按时间t1rydlwq1#
让我给你介绍一下我和布莱恩一直在做的一个项目,这个项目利用了Cassandra和斯托姆:https://github.com/hmsonline/storm-cassandra-cql
您可以通过几个示例来了解如何开发适合键/列Map的cqltuplemapper。代码仍在开发中,但cql3有一个合适的back-map实现,它既可以持久化聚合,也可以存储分区持久化。
为了满足您的需要,您需要定义一个三叉戟拓扑,该拓扑通过以下方法对传入的数据(句子)进行分组:
然后,您将实现一个cqltuplemapper——特别是Map(k key,v value),该Map将具有一个定制的cql insert语句,该语句将键Map到其传递的值。您的查询类似于:
我希望这有帮助。