如何将数据从 Cassandra 导出到 mongodb?

Posted

技术标签:

【中文标题】如何将数据从 Cassandra 导出到 mongodb?【英文标题】:How to export data from Cassandra to mongodb? 【发布时间】:2015-06-09 08:50:12 【问题描述】:

我正在使用 Apache (Kafka-Storm-Cassandra) 进行实时处理。我面临的问题是我不能直接在 Cassandra 上使用聚合查询(可以使用 Datastax,但它是一项付费服务​​)。此外,我也考虑过使用 mongodb 但它不适合更多和频繁的写入。因此,我正在考虑在storm中进行所有计算并将其存储到Cassandra中,然后每小时左右将其移动到mongodb以执行我的进一步分析。

这是正确的方法还是有更好的选择来实现这一点?

Also, How can I export data directly from Cassandra to mongodb prefebly using JAVA?

提前致谢!!

【问题讨论】:

【参考方案1】:

在不了解您的全部要求的情况下,无法预测插入/更新的数量是好还是坏。 Mongo 对于大量写入不太可取,但它可以支持相当不错的否。的插入。如此重要的是每单位时间你有多少写入,并在此基础上你可以做出决定。

我看到 Mongo 在服务器级机器上每秒写入 1000-2000 次,平均为 4-5 毫秒。当然,Cassandra 以优势击败它,但如果您需要执行任何聚合,那么 Mongo 具有更好的框架和功能。

对于导出和导入,可以使用平面 csv。 Cassandra 可以将数据导出到 csv,而 MongoDB 可以通过导出/导入选项从 csv 导入数据。

检查 MongoImport 并从 cassandra 导出, 例如,

copy employee (emp_id, dept, designation, emp_name, salary)
 to 'employee.csv';

【讨论】:

感谢您的回复。我需要设计一个系统来跟踪电子商务网站上的用户活动。写入次数完全取决于网站上的用户流量。所以现在我不确定每秒的写入次数。 您不需要确切的编号。您可以监控一段时间(一天或一周)的流量,然后您可以找出什么是高峰时段负载。如果您的应用程序不够大,那么我认为您的写入速度将低于 100-200 次/秒。如果是这种情况,那么单独使用 MongoDB 就足够了。这将节省您的导出/导入时间并允许聚合查询。但请记住,如果您在工作时间运行聚合查询,您的查询时间/处理时间将会增加并且可能会影响性能。最好的方法是在夜间或负载最小时处理聚合查询。 目前我们只有少数客户端(只有 2 个),因此此时写入次数较少。但我们期待更多的客户端,所以我们不想达到我们的目标需要回滚并破坏我们现有的系统。客户将运行聚合查询以检查该页面上的分析报告(类似于谷歌分析报告),因此这不在我们的控制之下。 从我的理解到现在,我认为最好的设计是创建一个MongoDB服务器集群。虽然目前你有 2 个用户,但假设未来它仍然基于分布增加到 1K-10K 用户我不认为每秒插入/更新会增加 1000。这意味着你的插入/更新问题已经解决了很长一段时间(如果它增加超过假设值,您需要增加集群大小/对集合进行分区)。在集群中,仅将一些副本用于具有中间同步因子的聚合查询,这不会因同步问题而开销此副本服务器。 这将为您的分析报告查询提供服务。我希望您理解建议的设计。

以上是关于如何将数据从 Cassandra 导出到 mongodb?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apache Sqoop 将数据从 Mongo/Cassandra 导出到 HDFS

从 MySQL 到 Mongo 数据导出:如何保存创建日期?

在 cassandra 中导入和导出模式

如何在 cassandra 中将环从集群中分离出来

Cassandra 将数据迁移到新服务器

无法使用Python导出Cassandra表