【问题标题】:cassandra sstableloader load data from csv with various partition keyscassandra sstableloader 使用各种分区键从 csv 加载数据
【发布时间】:2015-03-25 12:20:38
【问题描述】:

我想将一个大型 CSV 文件加载到我的 cassandra 集群(此时为 1 个节点)。

基于:http://www.datastax.com/dev/blog/using-the-cassandra-bulk-loader-updated
我的数据由 CQLSSTableWriter 转换为 SSTables 文件,然后我使用 SSTableLoader 将该 SSTables 加载到已经包含一些数据的 cassandra 表中。

该 CSV 文件包含各种分区键。
现在假设使用了多节点 cassandra cluser。

我的问题:
1) 在多节点集群的情况下,我使用的加载过程是否正确?
2) SSTable 文件是否会被 SSTableLoader 拆分并发送到负责特定分区键的节点?

谢谢

【问题讨论】:

  • 您的 CSV 文件有多大?
  • 假设我的 CSV 有 100*10^6 行 - 我的意思是它是一个相当大的文件,不推荐使用 CQLSH COPY 命令(如此处所述:datastax.com/documentation/cql/3.1/cql/cql_reference/…)“COPY FROM用于将小型数据集(几百万行或更少)导入 Cassandra。要导入更大的数据集,请使用 Cassandra 批量加载程序。"
  • 我用的是 Cassandra v2.0.11

标签: csv cassandra


【解决方案1】:

1) 加载到单节点集群或100节点集群是一样的。唯一的区别是,如果您有一个多节点集群,数据将围绕环分布。您运行sstableloader 的节点成为协调器(正如@rtumaykin 已经说明的那样)并将写入发送到适当的节点。

2) 不。正如我上面的回答,“拆分”是由协调员完成的。将sstableloader 实用程序视为客户端向集群发送写入的另一个实例。

3) 针对您的后续问题,sstableloader 实用程序不是向节点发送文件,而是发送对这些 SSTable 中包含的行的写入。 sstableloader 读取数据并向集群发送写入请求。

【讨论】:

    【解决方案2】:
    1. 是的
    2. 实际上是由协调节点完成,而不是由 SSTableLoader。

    【讨论】:

    • 协调节点是否会拆分对应的*.db文件(如*-Data.db、*-Filter.db、*-Statistics.db等CQLSSTableWriter生成的文件),然后在其中查找数据每个分区键的文件,最后将特定分区键的数据发送到正确的节点?它实际上是如何工作的?
    猜你喜欢
    • 2016-05-04
    • 2014-11-27
    • 2017-12-06
    • 2017-01-31
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多