有一个用例,我必须读取巨大的 Parquet 文件并转换为 Rocksdb 二进制文件,所以我决定使用 spark(因为我团队中的每个人都熟悉它)。
从 Rocksdb 方面我知道它不是分布式的,你不能并行化。
所以我所做的是我为每个任务使用 Spark 并行创建了多个 Rocksdb 实例。
现在我想将它们结合在一起。所以我的问题是,是否可以将 Rocksdb 的多个实例组合在一起以使用一些后处理来创建一个大的 Rocksdb 实例?
有一个用例,我必须读取巨大的 Parquet 文件并转换为 Rocksdb 二进制文件,所以我决定使用 spark(因为我团队中的每个人都熟悉它)。
从 Rocksdb 方面我知道它不是分布式的,你不能并行化。
所以我所做的是我为每个任务使用 Spark 并行创建了多个 Rocksdb 实例。
现在我想将它们结合在一起。所以我的问题是,是否可以将 Rocksdb 的多个实例组合在一起以使用一些后处理来创建一个大的 Rocksdb 实例?
为什么不在驱动程序上执行 collectPartitions() 或 toLocalIterator() 并处理每个分区?是的,它不会是并行执行,但您将获得一个合并的数据库。
另外......更新......您可以在每个执行程序上使用 SSTFileWriter 作为 hadoopOutputFileFormat 的变体......并且rocksdb支持读取 sst 文件......这是它的自述文件。
https://rocksdb.org/blog/2017/02/17/bulkoad-ingest-sst-file.html