【发布时间】:2014-09-13 19:15:21
【问题描述】:
我使用 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?
【问题讨论】:
-
您是否考虑过为此制作自己的小玩意儿?使用 datastax 驱动程序,您可以轻松地发出提取数据的请求,然后将它们序列化到 csv 文件中,几乎没有 Java 代码?这将确保您获得您想要的确切结果(不过需要一点努力)。
-
此外,我没有得到“分页读取”的方法和问题。
-
使用分页读取 - 使用 python 驱动程序我尝试使用限制(测试值 100 - 10000,基于 TimeUuid)和偏移量读取内容,它真的很慢,Cassandra 是能够在 3 个实例和复制因子 2 上每秒读取大约 1.5k 条记录,我无法想象,仅使用驱动程序就可以构建快速读取,因为对于每一行 Cassandra 必须检查存储了哪些节点数据。
标签: csv cassandra bigdata cassandra-2.0