Я недавно обновился до cassandra версии 3.3. У меня есть программа, которая читает файл CSV и генерирует файлы SSTable с помощью CQLSSTableWriter. После создания этих файлов SSTable я использую программу SSTableLoader для потоковой передачи файлов в кластер cassandra. В написанной мной программе используются следующие зависимости maven:
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
<version>3.3</version>
Я использовал дистрибутив cassandra от Datastax для версии 3.3, и массовая загрузка SSTables с моей машины в кластер cassandra прошла успешно. Однако недавно я перешел на использование другого дистрибутива кассандры под названием Stratio Cassandra, который поддерживает индексы Lucene.
После того, как stratio cassandra был настроен на машине, я попытался выполнить массовую загрузку SSTables в кластер stratio cassandra (используя программу sstableloader.bat из каталога Datastax (например, 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 нет ссылки на столбец с названием «флаги», поэтому я не знаю, почему он вызывает эту ошибку.
Другой подход, который я выбрал, - это использовать программу sstableloader.bat из дистрибутива stratio-cassandra. Однако я получаю другое сообщение об ошибке:
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
Таким образом, я могу успешно загрузить данные в дистрибутив Datastax Cassandra 3.3, однако я не могу применить тот же процесс массовой загрузки SSTables к другому дистрибутиву Cassandra, а именно: Stratio.
Я не сталкивался с этой проблемой раньше, и есть ограниченные статьи по этому поводу.
Я был бы признателен, если бы кто-нибудь мог указать мне, предоставить мне какие-либо решения, чтобы попытаться или указать мне правильное направление о том, как я могу успешно загрузить SSTables в Stratio cassandra.
Большое спасибо,