【问题标题】:Cassandra SSTableLoader : failed to list files in <directory_path>Cassandra SSTableLoader:未能列出 <directory_path> 中的文件
【发布时间】:2016-03-28 20:58:30
【问题描述】:

我正在关注来自 https://github.com/yukim/cassandra-bulkload-example 的 Cassandra 3.4.0 的 Cassandra Bulk Loader 示例。数据文件在数据文件夹下生成。它们如下:

quote-historical_prices-ka-1-CompressionInfo.db  quote-historical_prices-ka-1-Index.db
quote-historical_prices-ka-1-Data.db             quote-historical_prices-ka-1-Statistics.db
quote-historical_prices-ka-1-Digest.sha1         quote-historical_prices-ka-1-TOC.txt
quote-historical_prices-ka-1-Filter.db

但是,当尝试使用 sstableloader -d 127.0.0.1 ~/workspace/cassandra-bulkload-example/data/quote/historical_prices/ 加载这些时,我收到如下错误:

Established connection to initial hosts
Opening sstables and calculating sections to stream
Failed to list files in /home/srai/workspace/cassandra-bulkload-example/data/quote/historical_prices
java.lang.NullPointerException
java.lang.RuntimeException: Failed to list files in /home/srai/workspace/cassandra-bulkload-example/data/quote/historical_prices
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:53)
        at org.apache.cassandra.db.lifecycle.LifecycleTransaction.getFiles(LifecycleTransaction.java:544)
        at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:76)
        at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:165)
        at org.apache.cassandra.tools.BulkLoader.load(BulkLoader.java:80)
        at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:48)
Caused by: java.lang.NullPointerException
        at org.apache.cassandra.io.sstable.format.SSTableReader.openForBatch(SSTableReader.java:431)
        at org.apache.cassandra.io.sstable.SSTableLoader.lambda$openSSTables$220(SSTableLoader.java:121)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.lambda$innerList$208(LogAwareFileLister.java:75)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
        at java.util.TreeMap$EntrySpliterator.forEachRemaining(TreeMap.java:2965)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.innerList(LogAwareFileLister.java:77)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:49)
        ... 5 more
Exception in thread "main" org.apache.cassandra.tools.BulkLoadException: java.lang.RuntimeException: Failed to list files in /home/srai/workspace/cassandra-bulkload-example/data/quote/historical_prices
        at org.apache.cassandra.tools.BulkLoader.load(BulkLoader.java:93)
        at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:48)
Caused by: java.lang.RuntimeException: Failed to list files in /home/srai/workspace/cassandra-bulkload-example/data/quote/historical_prices
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:53)
        at org.apache.cassandra.db.lifecycle.LifecycleTransaction.getFiles(LifecycleTransaction.java:544)
        at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:76)
        at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:165)
        at org.apache.cassandra.tools.BulkLoader.load(BulkLoader.java:80)
        ... 1 more
Caused by: java.lang.NullPointerException
        at org.apache.cassandra.io.sstable.format.SSTableReader.openForBatch(SSTableReader.java:431)
        at org.apache.cassandra.io.sstable.SSTableLoader.lambda$openSSTables$220(SSTableLoader.java:121)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.lambda$innerList$208(LogAwareFileLister.java:75)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
        at java.util.TreeMap$EntrySpliterator.forEachRemaining(TreeMap.java:2965)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.innerList(LogAwareFileLister.java:77)
        at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:49)
        ... 5 more

【问题讨论】:

  • 请说明您使用的是哪个 Java 版本。
  • @Akki : 我使用的是 java 版本“1.8.0_77”

标签: java cassandra


【解决方案1】:

bulk loader 示例默认为2.1.12 构建 sstables。不支持流式传输 CASSANDRA-10940 之前未跳过或提供良好错误而提出的。但是,在 3.5 中,他们将在 CASSANDRA-10990 中再次开始支持它。

所以要么在新版本中构建 sstables,要么等待 3.5。

【讨论】:

  • 我尝试在 build.gradle 中将 cassandra_version 从 2.1.12 更改为 3.4.0。但是,由于项目显示错误,这似乎不正确。我将 cassandra_version 更改为 2.2.0,它也可以编译但同样的问题。我应该定义什么版本才能使用 sstableloader?
  • 3.4.0 不存在,3.0 之后版本控制略有变化。它只是3.4。不过 3.0.4 也应该可以工作
猜你喜欢
  • 2015-06-29
  • 2021-11-17
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2016-06-24
  • 2014-03-08
相关资源
最近更新 更多