cassandra bulk loader数据库描述符空指针异常

cassandra bulk loader database descriptor null pointer exception

我是 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

我没有更改示例文件中的任何内容。我假设它与 运行ning 同一示例中提供的 jar 文件具有完全相同的结果,但事实并非如此。有人可以解释我做错了什么吗?

谢谢。

您使用的是哪个版本的 Cassandra?该示例是为 2.1 编写的。

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

可能想尝试在配置中设置客户端模式

org.apache.cassandra.config.Config.setClientMode(true);

否则,您可能会遇到静态声明的 cassandra 设置中的数据库描述符问题。你可以通过在你的类路径中放置一个假的 cassandra.yaml 来解决它们,我认为 cassandra-all 包正在为这个例子提供。

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

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

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

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