我是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文件具有完全相同的结果,但它没有。谁能解释我做错了什么?
感谢。
答案 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)