【问题标题】:Cassandra SSTableLoader field is not a column in this metadataCassandra SSTableLoader 字段不是此元数据中的列
【发布时间】:2016-06-24 07:36:21
【问题描述】:

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

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

我一直在使用 Datastax 的 cassandra 版本 3.3 分发版,并且将 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 的正确方向。

非常感谢,

【问题讨论】:

    标签: cassandra cassandra-3.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。)

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 2022-01-14
      • 2016-05-04
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多