【问题标题】:What is the best way to copy a large table ( > 1.7M rows ) to another table将大表(> 1.7M 行)复制到另一个表的最佳方法是什么
【发布时间】:2016-04-13 04:04:10
【问题描述】:

datastax-企业

datastax 启动

我们正在使用 DataStax DSE 集群。

我们正在尝试将一个表迁移到另一个与第一个表具有相同定义但具有二级索引的表

它有大约 170 万行

1) 我们首先使用 cqlsh 中的 Cassandra COPY 命令。这需要很长时间 > 1 小时。超时,没用 2)然后我们编写一个程序将第一个表导出为 CSV 文件。我们将此 CSV 文件分解为单独的 CSV 文件,并尝试将其加载到第二个表中。

插入需要一些时间,但它失败了

3) 我们正在调查http://www.datastax.com/dev/blog/using-the-cassandra-bulk-loader-updated

既然我们有 CSV 文件,这是正确的方法吗?

我们正在使用这个库 https://github.com/yukim/cassandra-bulkload-example 来生成 SSTABLE。

这是正确的处理方式吗?

【问题讨论】:

标签: datastax-enterprise datastax-startup


【解决方案1】:

如果您有 csv,我建议您使用此批量加载程序:

https://github.com/brianmhess/cassandra-loader

如果您在集群上启用了 Spark 分析:

sc.cassandraTable("ks1","table").saveToCassandra("ks2","table")

另见:

http://docs.datastax.com/en/latest-dse/datastax_enterprise/migration/migratingBulkSparkRDD.html

【讨论】:

  • 嗨 Lain,我们确实有可用的 CSV 文件。使用这个工具,我想我们首先必须在目标数据库上创建模式。然后在那里运行加载工具。那正确吗?另外,我们在从远程主机断开连接时遇到问题,在运行主 cassandra 节点的节点上运行此加载工具是否更好?
  • 另外,为什么这个工具更好?我检查了代码,看起来它只使用了 ConnectionPool,这比 sshtableload 更好吗?
  • 此幻灯片分享比较了 sstableloader、COPY 和 cassandra 加载程序应用程序:slideshare.net/BrianHess4/bulk-loading-into-cassandra 最大的优势是不必编写 sstables。您还可以使用加载程序容忍节点故障,但不能使用 sstableloader。通常最好在不同的主机上运行客户端。如果您的连接中断,您可以尝试减少期货数量和/或费率。
猜你喜欢
  • 1970-01-01
  • 2013-01-09
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 2016-02-17
  • 2012-04-22
  • 2010-09-29
相关资源
最近更新 更多