1

ingestExternalFile()我在 RocksDB API 中找到了一个。但是当我尝试将 sst 文件从一个 RocksDB 摄取到另一个 RocksDB 时,它给了我一个打击异常:

Exception in thread "main" org.rocksdb.RocksDBException: External file version not found
    at org.rocksdb.RocksDB.ingestExternalFile(Native Method)
    at org.rocksdb.RocksDB.ingestExternalFile(RocksDB.java:2142)

有谁能够帮我?

4

1 回答 1

1

你不能。

当您尝试这样做时,文件版本、CF id 和序列号将不匹配。通常,要摄取的 SST 是使用 SSTFileWriter 创建的。这个 writer 将 SST 中所有行的 SEQUENCE ID 设置global sequence number为 0。当这个 SST 文件被摄取时,数据库在摄取后为这个文件分配一个合适的全局序列号。当从 db 摄取 SST 到 db 时,这会导致问题。在未来的版本中可能会出现从一个 Rocks 实例到另一个实例的压缩 SST 文件。

于 2018-08-01T13:01:19.847 回答