当有大约 100 万条记录时,如何在 Java 中比较 Hive 和 Cassandra 数据
Posted
技术标签:
【中文标题】当有大约 100 万条记录时,如何在 Java 中比较 Hive 和 Cassandra 数据【英文标题】:How to compare Hive and Cassandra data in Java when there are around 1 million records 【发布时间】:2017-06-02 02:58:33 【问题描述】:我使用 Hive 和 Cassandra,表结构和数据在 Hive 和 Cassandra 中是相同的。将有近 100 万条记录。我的要求是我需要检查 Cassandra 和 Hive 中的每一行是否都有相同的数据。
-
我可以直接比较两个结果集对象吗? (一个包含 Cassandra 数据的结果集和另一个来自 Hive 的结果集)
如果我们对结果集对象进行迭代,结果集对象一次可以保存 100 万条记录吗?会有性能问题吗?
在处理如此庞大的数据时,我们需要注意什么?
【问题讨论】:
【参考方案1】:嗯,一些初始条件对我来说似乎很奇怪。 首先,1M 条记录对于现代 RDBMS 来说并不是什么大问题,尤其是当我们不希望有实时查询响应时。 其次,Hive 和 Cassandra 表结构相同的事实。 Cassandra 的范例是查询优先建模,它适用于 Hive 以外的某些场景。 但是,对于您的问题: 1. 是的。您可以编写 Java(正如我在标记列表中看到的 Java)程序,该程序将通过 JDBC 连接到 Hive 和 Cassandra 并一一比较结果集项目。 但是您需要确保 Hive 和 Cassandra 的项目顺序相同。这可以通过 Hive 查询来完成,因为没有太多方法可以进行 Cassandra 排序。 2. 结果集只是一个游标。它不会收集内存中的全部数据,只收集一些记录(它是可配置的)。 3. 1M 或者记录它不是一个巨大的数据,但是,如果你要处理数十亿的记录,那就是它。但我无法为您提供解决所有涉及大量数据的问题的灵丹妙药,因为每个案例都是特定的。
无论如何,对于您的情况,我有一些顾虑: 我没有关于 Cassandra 的最新 JDBC 驱动程序功能和限制的详细信息。 您尚未提供有关表结构以及未来数据增长和复杂性的详细信息。我的意思是,现在您在单个数据库中有 10 万行和 10 列,但稍后您可以在 10 个 Cassandra 节点的集群中拥有 100M 行。 如果这不是问题,那么您可以尝试您的解决方案。否则,为了便于比较,我建议执行以下操作: 1. 将 Cassandra 的数据导出到 Hive。 2. 比较两个 Hive 表中的数据。 我相信这会更简单、更健壮。
但以上所有内容都没有解决有关为您的任务选择工具(Hive 和 Cassandra)的问题。您可以找到更多关于典型 Cassandra 使用案例 here 的信息,以确保您做出了正确的选择。
【讨论】:
以上是关于当有大约 100 万条记录时,如何在 Java 中比较 Hive 和 Cassandra 数据的主要内容,如果未能解决你的问题,请参考以下文章