cassandra批量加载器数据库描述符空指针异常

时间:2015-03-16 14:44:37

标签: cassandra

我是cassandra的新手,并尝试按照以下博客中的批量加载示例:

http://www.datastax.com/dev/blog/using-the-cassandra-bulk-loader-updated

如果我使用提供的打包的jar并运行该示例,则可以正常工作。

相反,如果我尝试使用提供的源文件(https://github.com/yukim/cassandra-bulkload-example/blob/master/src/main/java/bulkload/BulkLoad.java)并运行生成的jar我会收到此错误:

Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.cassandra.cql3.statements.UpdateStatement.addUpdateForKey(UpdateStatement.java:109)
at org.apache.cassandra.io.sstable.CQLSSTableWriter.rawAddRow(CQLSSTableWriter.java:218)
at org.apache.cassandra.io.sstable.CQLSSTableWriter.addRow(CQLSSTableWriter.java:138)
at org.apache.cassandra.io.sstable.CQLSSTableWriter.addRow(CQLSSTableWriter.java:113)
at bulkload.BulkLoad.main(BulkLoad.java:145)
Caused by: java.lang.NullPointerException
at org.apache.cassandra.config.DatabaseDescriptor.createAllDirectories(DatabaseDescriptor.java:605)
at org.apache.cassandra.db.Keyspace.<clinit>(Keyspace.java:73)
... 5 more

我还没有从示例中更改文件中的任何内容。我假设它与运行同一示例中提供的jar文件具有完全相同的结果,但它没有。谁能解释我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:1)

你使用的是什么版本的Cassandra?这个例子是用2.1写的。

https://github.com/yukim/cassandra-bulkload-example/blob/master/build.gradle#L14

可能想尝试在config

中设置客户端模式
org.apache.cassandra.config.Config.setClientMode(true);

否则,您可能会在cassandra设置静态声明的内容中遇到databasedescriptor问题。您可以通过在类路径中放置一个假的cassandra.yaml来解决它们,我认为cassandra-all包提供了示例。

值得一提的是,如果您只是直接使用插入而不是尝试批量加载它,这种情况很可能表现得更好。

答案 1 :(得分:1)

显然这是由以下原因引起的已知问题:

https://issues.apache.org/jira/browse/CASSANDRA-8808

并且应该在下一个版本中修复。