我有一个java程序作为服务运行,这个程序必须向cassandra集群插入50k行/秒(1行有25列)。
我的群集包含3个节点,1个节点有4个cpu核心(核心i5 2.4 ghz),4 gb ram。
我使用了Hector api,多线程,批量插入但性能太低(约25k行/秒)。
任何人都建议了另一个解决方案。 cassandra是否支持内部批量插入(不使用Thrift)。
答案 0 :(得分:1)
Astyanax是Apache Cassandra的高级Java客户端。 Apache Cassandra是一个高度可用的面向列的数据库。 Astyanax目前在Netflix上使用。问题通常尽可能快地修复,并且经常发布。
答案 1 :(得分:1)
我很幸运能够创建sstables并直接加载它们。有一个 sstableloader 分发中包含的工具以及JMX接口。您可以使用 SSTableSimpleUnsortedWriter 类创建sstables。
详情here。
答案 2 :(得分:1)
将数据批量插入Cassandra的最快方法是 sstableloader Cassandra在0.8以后提供的实用程序。为此,您必须首先创建sstables,这可以通过 SSTableSimpleUnsortedWriter 进行更多有关此问题的描述here
另一个更快的方法是Cassandras BulkoutputFormat for hadoop。这样我们就可以编写Hadoop作业来将数据加载到cassandra.See more on this bulkload to cassandra with hadoo