我使用 Cassandra 2.0.9 在一个列族中存储相当大量的数据,比如说 100Gb。我想快速将这些数据导出到 CSV。我尝试过:
- sstable2json - 它会生成相当大的 json 文件,很难解析 - 因为工具将数据放在一行中并使用复杂的模式(例如 300Mb 数据文件 = ~2Gb json),它需要需要花费大量时间进行转储,而且 Cassandra 喜欢根据其内部机制更改源文件名
- COPY - 导致大量记录在相当快的 EC2 实例上超时
- CAPTURE - 与上面一样,导致超时
- 使用分页读取 - 我使用了 timeuuid,但它每秒返回大约 1,5k 条记录
我使用具有快速存储、15 Gb RAM 和 4 核的 Amazon Ec2 实例
是否有更好的选择将千兆字节的数据从 Cassandra 导出到 CSV?
最佳答案
2020 年更新:DataStax 提供了一个名为 DSBulk 的特殊工具,用于从 Cassandra(从 Cassandra 2.1 开始)和 DSE(从 DSE 4.7/4.8 开始)加载和卸载数据。在最简单的情况下,命令行如下所示:
dsbulk unload -k keyspace -t table -url path_to_unload
DSBulk 针对加载/卸载操作进行了大量优化,并且有很多选项,包括从压缩文件导入/导出、提供自定义查询等。
关于csv - 将大量数据从 Cassandra 导出到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24896336/