卡桑德拉正在从 "Table did not have any partition key columns in the schema tables" 中恢复

Cassandra Recovering from "Table did not have any partition key columns in the schema tables"

我有一些通过 Spark Cassandra 连接器创建的 table,创建的 table 似乎处于错误状态,因为它无法查询或删除,但我能够 运行 desc 在上面,它显示为 desc tables。但是,它的列不会显示在 system_schema.columns 中。导致以下错误:

cqlsh:ams_staging> desc bcookie_sad_1540577971;

CREATE TABLE ams_staging.bcookie_sad_1540577971 (
    bcookie text PRIMARY KEY,
    sadinfo text
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

cqlsh:ams_staging> drop table ams_staging.bcookie_sad_1540577971;
ServerError: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.AssertionError: Table ams_staging.bcookie_sad_1545270474 did not have any partition key columns in the schema tables

完整堆栈跟踪

ERROR [MigrationStage:1] 2018-12-21 01:58:59,386 CassandraDaemon.java:226 - Exception in thread Thread[MigrationStage:1,5,main]
java.lang.AssertionError: Table ams_staging.bcookie_sad_1545270474 did not have any partition key columns in the schema tables
    at org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:950) ~[apache-cassandra-3.9.jar:3.9]
    at org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:925) ~[apache-cassandra-3.9.jar:3.9]
    at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:888) ~[apache-cassandra-3.9.jar:3.9]
    at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesOnly(SchemaKeyspace.java:880) ~[apache-cassandra-3.9.jar:3.9]
    at org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:1277) ~[apache-cassandra-3.9.jar:3.9]
    at org.apache.cassandra.schema.SchemaKeyspace.mergeSchemaAndAnnounceVersion(SchemaKeyspace.java:1256) ~[apache-cassandra-3.9.jar:3.9]
    at org.apache.cassandra.service.MigrationManager.runMayThrow(MigrationManager.java:534) ~[apache-cassandra-3.9.jar:3.9]
    at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) ~[apache-cassandra-3.9.jar:3.9]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_72]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_72]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_72]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_72]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_72]

同样的错误导致一些节点无法启动。此外,任何其他通过 Spark Cassandra 连接器写入此密钥空间的尝试都将失败并出现相同的错误。尝试 t运行 分类 table 也不起作用。我还尝试将 partition_key 列添加到 system_schema.columns 中,但也没有用。

我发现 https://jira.apache.org/jira/browse/CASSANDRA-13180,这似乎表明唯一的恢复方法是 "restore from backup"。有没有办法简单地删除这些 table 或让 Cassandra 忘记这些 table?

Cassandra 版本 3.9

不幸的是没有办法恢复。删除键空间是唯一的方法。