将数据加载到 Cassandra 列族的最快方法是啥
Posted
技术标签:
【中文标题】将数据加载到 Cassandra 列族的最快方法是啥【英文标题】:What is the fastest way to load data into Cassandra column-family将数据加载到 Cassandra 列族的最快方法是什么 【发布时间】:2016-01-28 13:30:28 【问题描述】:我创建了一个 Cassandra 列族,我需要为此列族从 CSV 文件加载数据。 csv 文件有一个 15 Gb 的卷。
我正在使用 CQL 'COPY FROM' 命令,但这需要很长时间才能加载数据。 将大量数据从 csv 文件加载到 Cassandra 的最佳/最简单方法是什么?
【问题讨论】:
【参考方案1】:CQLSH 内置复制到/从 CSV 文件非常简单,适用于中小型数据集。您没有提及您使用的是哪个 Cassandra 版本,但在 2.1.5 (CASSANDRA-8225) 中进行了很多性能改进。
另一个对较大数据有良好结果的替代工具是cassandra-loader。您可以尝试使用文件的子集(如 1000 行)来确认它是否有效,然后尝试使用整个文件来查看性能。
【讨论】:
我使用的是 Cassandra 2.2.3。感谢 BrianC,我将使用 cassandra-loader 测试负载数据并检查性能...【参考方案2】:使用 sstableloader。查看this blog post。您需要将 CSV 文件解析为具有相同 C* 架构的 sstable,然后将它们批量加载到 C* 中。
【讨论】:
sstableloader 是总原始速度的正确答案,但对于 15g 文件可能有点过分了。 sstableloader 使用批量加载接口,因此您可以提前生成 sstable 并将它们作为数据文件流式传输到系统中,而不是作为单个突变。这要快得多,但确实需要您提前制作 sstables。以上是关于将数据加载到 Cassandra 列族的最快方法是啥的主要内容,如果未能解决你的问题,请参考以下文章