问题标签 [rocksdb-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
163 浏览

apache-kafka - Kafka KeyValueStore - 删除方法不起作用

我正在尝试在我的一个 Kafka 处理器中安排一项任务,以从本地 KeyValueStore (RocksDB) 中删除记录。即使到目前为止没有出现异常,也没有任何记录被删除。这是我的代码:

}

0 投票
0 回答
139 浏览

apache-kafka - 删除后 RocksDB 未释放空间

我们的大多数服务都使用 Kafka 存储,如您所知,它在后台使用 RocksDB。我们正在尝试每 6 小时删除一次过时且格式错误的记录,以释放空间。即使该记录已从 RocksDB 中删除(添加了一个墓碑并且该记录不再可用),我们也没有看到空间发生任何变化。

我想,需要触发压缩,以便压缩已删除的记录。但是,据我所知,只有当 L0 文件的数量达到 level0_file_num_compaction_trigger 时才会触发分级压缩。由于我的服务几乎不消耗任何数据(在开发环境中),我相信无法触发压缩,因此“已删除”记录仍然存在。

请注意,我们只使用默认的 RocksDB 配置。我还注意到,当我在自定义 RocksDB 配置中使用 #options.setDeleteObsoleteFilesPeriodMicros() 时,本地存储的大小会急剧下降。但是,我不确定该方法究竟做了什么。

我还读到,可以选择使用压缩过滤器进行定期压缩。但是,我不确定如何使用 Java 添加一个。

0 投票
0 回答
48 浏览

apache-kafka - Kafka KeyValue 存储的磁盘空间在删除后未更新

我的服务正在使用 Kafka 键值存储。我已经在两个处理器中安排了两个任务,这些任务从存储中删除了格式错误和过时的记录。但是,我只有在停止本地实例后才能看到更新的磁盘空间。我检查了,无论任务是否正在运行,从我的 java 进程到 RocksDB 都有很多句柄。

这是我的代码:

}

其他处理器的init方法中的代码几乎相同。我正在使用默认的 RocksDB 配置。任何帮助,将不胜感激。

0 投票
1 回答
92 浏览

rocksdb - RocksDb Java API 对事务的支持

RocksJavaAPI 是否支持事务?我看到 JAR 中有一个 Transaction DB 类。我无法对事务 Db 类进行开始事务。

我无法执行 db.beginTransaction,因为此类方法不可用。任何有关如何在 Java 中完成的指针都值得赞赏。

0 投票
1 回答
298 浏览

rocksdb - 在rocksdb中按键排序

我正在尝试在 java 中将大量数据与 2 个文件夹条目 folder1 和 folder2 进行比较。每个文件夹包含几个文件,每个文件大小约为 10 MB。我在每个文件夹中有大约 100 个文件。每个文件都包含一个键值行,例如(每个文件夹总共大约有 5 亿行):

  1. 第一步

首先,在我上面的示例中,从 folder1 中读取所有文件的每一行并将其加载到rocksdb中

  1. 第二步

一旦我的rocksdb 充满了folder1 数据,对于在folder2 中读取的每一行,我调用folder1 的rocksdb get() 方法来检查为folder2 行提取的密钥是否存在于rocksdb 中。当我不存在时,它返回 null。请注意,我不能使用rocksdb keyMayExist() 方法,因为当您操作大量数据时它会返回误报结果。

当 folder1 中的数据根据​​键值排序时,性能是正确的。

但是当输入数据未排序时,我的持续时间乘以 3(我使用 shell 命令对它们进行了混洗)。这很奇怪,因为在我的测试中,我将 unsort folder1 复制到 folder2 中(只是复制我的文件夹)。因此,即使文件夹 1 未排序,文件夹 2 也未排序,其方式与文件夹 1 完全相同。

我的问题是如何按键排序我的rocksdb?

0 投票
0 回答
58 浏览

java - Kafka RocksDB 不断增长的磁盘大小

我有一个 kafka 流应用程序,它获取仓库库存流和最新价格流,并根据这些价格计算每个库存的价值。

我收到一个库存更新,作为带有关键warehouseId 的流。

我总共有 ~100 个定价商品和 ~10 个仓库

我对 kafka-state 中 RocksDB 文件的大小不断增加有疑问。

代码如下

RocksDB 文件的大小已经稳定增长了一周左右。我没有看到空间被回收。kstream toTable 操作似乎占用了大部分空间。我无法弄清楚为什么磁盘空间没有被释放,因为新条目相互替换。

我确定 object 的equalshashCode函数InventoryKey写得正确。

0 投票
1 回答
101 浏览

rocksdb - 可以在数据库打开时使用 java 库更改 RocksDB 设置吗?

使用java库,任何配置更改都可以在不需要重新打开数据库的情况下生效吗?例如level0SlowdownWritesTrigger.

更多上下文:我正在尝试在批量加载模式和常规模式之间切换。例如,在应用启动时禁用自动压缩,加载数据,然后启用自动压缩。在测试中,这使我的初始加载时间减少了 75%。
问题是更改Options不会生效,至少在我制作它们的方式上。我不想重新打开数据库,因为这会使现有的数据流处理复杂化。

我试过的示例代码。在此示例中,我正在更改选项中的自动压缩设置。

0 投票
0 回答
58 浏览

java - 获取 org.rocksdb.RocksDBException:块中的错误条目

我正在使用rocksDB来存储键是字符串,值是整数的数据。最近我的应用程序在写入岩石时抛出了以下异常。

当条目数约为 3.5 亿且数据库大小约为 18GB 时,该错误首先开始发生。这个问题很难重现,我试图通过放置近 7 亿个条目来重现它,但无法做到。我正在使用RocksDB 版本 6.13.3并为 RocksDB 使用以下选项:

有谁知道这个异常的原因可能是什么?

0 投票
1 回答
13 浏览

database - 有没有办法从 RocksDb 中的“ColumnFamilyName”中检索“ColumnFamilyHandle”?

或者,有没有办法ColumnFamilyHandles从数据库中获取所有当前打开的文件?

我知道静态函数RocksDB.listColumnFamilies。但这会返回一个List<byte[]> List containing the column family names. 不知道有没有办法ColumnFamilyHandle从这里过去。

0 投票
1 回答
35 浏览

apache-flink - 无法创建类原因:com.esotericsoftware.kryo.KryoException: java.io.EOFException: 没有更多字节了

我发现在特定的小型集群和本地机器中运行作业时出现问题。这项工作在大型机器上运行顺畅。我在用着:

  • com.twitter "chill-protobuf" 0.7.6
    • .排除 com.esotericsoftware.kryo “kryo”
  • com.google.protobuf "protobuf-java" 3.18.1

我在用着:

登录到一个任务管理器我可以看到路径/opt/flink/rocksdb有 1GB 并且 k8s 没有指示 DiskPressure。

并使用以下资源:

与其他运行良好且负载更大的集群相比,2 个 6G 的 TM 太多了。

我收到以下错误:

Protobuf + Kryo read + EOFException 表明问题可能是读取检查点或保存点。

我应该看什么?