Cassandra SSTableLoader字段不是此元数据中的列

时间:2016-03-09 18:37:51

标签: cassandra cassandra-3.0

我最近升级到了cassandra版本3.3。我有一个程序,它读取CSV文件并使用CQLSSTableWriter生成SSTable文件。生成这些SSTable文件后,我使用SSTableLoader程序将文件流式传输到cassandra集群。 我编写的程序使用以下maven依赖项:

<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
<version>3.3</version>

我一直在使用Datastax为版本3.3分发cassandra,并且将SSTables从我的机器批量加载到cassandra集群已成功运行。然而,最近我开始使用另一种名为'Stratio Cassandra'的cassandra分布,它支持Lucene索引。

在机器上设置了stratio cassandra之后,我尝试将SSTables批量加载到stratio cassandra集群(使用Datastax目录中的sstableloader.bat程序(例如C:\ Program Files \ DataStax-DDC \ apache-cassandra \ bin) ))。但是我收到以下消息:

flags is not a column defined in this metadata
java.lang.IllegalArgumentException: flags is not a column defined in this metadata
    at com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:272)
    at com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:278)
    at com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:83)
    at com.datastax.driver.core.AbstractGettableData.getSet(AbstractGettableData.java:217)
    at org.apache.cassandra.utils.NativeSSTableLoaderClient.createTableMetadata(NativeSSTableLoaderClient.java:172)
    at org.apache.cassandra.utils.NativeSSTableLoaderClient.fetchViews(NativeSSTableLoaderClient.java:157)
    at org.apache.cassandra.utils.NativeSSTableLoaderClient.init(NativeSSTableLoaderClient.java:93)
    at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:159)
    at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:103)

我的表和我的Java代码没有对名为'flags'的列的任何引用,因此我不知道它为什么会产生此错误。

我采用的另一种方法是使用stratio-cassandra发行版中的sstableloader.bat程序。但是我收到另一条错误消息:

Could not retrieve endpoint ranges: 
InvalidRequestException(why:unconfigured table schema_columnfamilies)
java.lang.RuntimeException: Could not retrieve endpoint ranges: 
    at org.apache.cassandra.tools.BulkLoader$ExternalClient.init(BulkLoader.java:338)
    at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:156)
    at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:106)
Caused by: InvalidRequestException(why:unconfigured table schema_columnfamilies)
    at org.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50297)
    at org.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50274)
    at org.apache.cassandra.thrift.Cassandra$execute_cql3_query_result.read(Cassandra.java:50189)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql3_query(Cassandra.java:1734)
    at org.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Cassandra.java:1719)
    at org.apache.cassandra.tools.BulkLoader$ExternalClient.init(BulkLoader.java:317)
    ... 2 more

总而言之,我可以成功地将数据批量加载到Cassandra 3.3的Datastax发行版中,但是我无法应用将SSTables批量加载到另一个cassandra发行版的相同过程 - 即:Stratio。

我之前没有遇到过这个问题,而且这篇文章的篇幅有限。

如果有人能指点我,请指教我提供任何解决方案,或者指出我如何成功地将SSTables加载到Stratio cassandra上,我将不胜感激。

非常感谢,

1 个答案:

答案 0 :(得分:1)

我不知道stratio,但最近修复了CASSANDRA(CASSANDRA-11275)中的一个错误。如果您的架构中有物化视图,则会发生错误。

该修复程序将于3.5发布,将于下个月发布。

此外,第二个例外表明stratio的Cassandra版本与Apache Cassandra 3.0 +不兼容。

异常中有why:unconfigured table schema_columnfamilies,不再用于Cassandra 3.0+。 (它由system_schema.tables替换。)