csv - 将大量数据从 Cassandra 导出到 CSV

标签 csv cassandra bigdata cassandra-2.0

我使用 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 针对加载/卸载操作进行了大量优化,并且有很多选项,包括从压缩文件导入/导出、提供自定义查询等。

有一系列关于 DSBulk 的博客文章,可以提供更多信息和示例:1 , 2 , 3 , 4 , 5 , 6

关于csv - 将大量数据从 Cassandra 导出到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24896336/

相关文章:

count - Cassandra - 即使 CONSISTENCY LEVEL 设置为 ALL 或 QUORUM,cqlsh 也会返回不一致的结果

database - Cassandra DB 中列族的性能

sql - hadoop orc表始终只使用一个映射器

MySQL 大型数据集

hadoop - 如何通过保留修改时间将 HDFS 文件从一个集群复制到另一个集群

php - 如何在 PHP 中解析列中具有多行数据的 csv

python-3.x - 为什么我无法将云函数中的 csv 分隔符设置为管道

javascript - Internet Explorer中的execCommand使用USC-2 Little endian编码保存csv文件,如何以UTF-8格式保存?

nosql - 使用复合键插入 cassandra 列族

ruby csv 合并单元格