2015-01-27 107 views
0

我想将大的CSV文件加载到我的cassandra集群(此时为1个节点)。cassandra sstableloader使用各种分区键从csv加载数据

基础上:http://www.datastax.com/dev/blog/using-the-cassandra-bulk-loader-updated
我的数据是由CQLSSTableWriter转化为SSTables文件,然后我用SSTableLoader来加载SSTables到卡桑德拉表已经包含一些数据。

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

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

谢谢

+0

您的CSV文件有多大? – 2015-01-27 07:47:49

+0

让我们假设我的CSV有100 * 10^6行 - 我的意思是它是一个非常大的文件,不推荐使用CQLSH COPY命令(如下所述:http://www.datastax.com/documentation/cql/ 3.1/cql/cql_reference/copy_r.html) “COPY FROM用于将小数据集(几百万行或更少)导入到Cassandra中。要导入更大的数据集,请使用Cassandra批量加载程序。 – 2015-01-27 10:35:21

+0

我使用Cassandra v2.0.11 – 2015-01-27 10:53:25

回答

1

1)加载到单节点集群或100节点集群中是相同的。唯一的区别是,如果您有多节点群集,则数据将在环中分布。您运行sstableloader的节点将成为协调者(如@rtumaykin已经指出的那样),并将写入发送到适当的节点。

2)否。正如我在上面的回答中,“分裂”是由协调员完成的。将sstableloader实用程序看作是发送写入群集的另一个客户端实例。

3)为回应您的后续问题,sstableloader实用程序未向节点发送文件,而是发送写入这些SSTables中所含行的信息。 sstableloader读取数据并向群集发送写入请求。

1
  1. 将实际由协调器节点完成的,而不是由SSTableLoader。
+0

协调器节点是否会拆分相应的* .db文件(如* -Data.db,* -Filter.db,* -Statistics.db和CQLSSTableWriter生成的其他文件),然后查找数据文件为每个分区密钥,并最终将特定分区密钥的数据发送到适当的节点? 它是如何工作的? – 2015-01-27 10:44:07