当有大约100万条记录时,如何比较Java中的Hive和Cassandra数据

时间:2017-06-02 02:58:33

标签: java cassandra hive bigdata

我正在使用Hive和Cassandra,表结构和数据在Hive和Cassandra中是相同的。将有近100万条记录。我的要求是我需要检查Cassandra和Hive中的每一行是否都有相同的数据。

  1. 我可以直接比较两个结果集对象吗? (Cassandra数据的一个结果集和Hive的另一个结果集)
  2. 如果我们迭代结果集对象,结果集对象可以一次保存100万条记录吗?会有任何性能问题吗?
  3. 在处理如此庞大的数据时,我们需要注意什么?

2 个答案:

答案 0 :(得分:2)

嗯,一些初始条件对我来说似乎很奇怪。 首先,1M记录对于现代RDBMS来说并不是什么大问题,特别是当我们不想要实时查询响应时。 其次,Hive和Cassandra表结构是一样的。 Cassandra的范例是查询优先建模,它适用于除Hive以外的一些场景。
但是,对于你的问题:
是的您可以编写Java(我在标记列表中看到Java)程序,它将通过JDBC连接到Hive和Cassandra并逐个比较结果集项。
但是你需要确保Hive和Cassandra的项目顺序相同。这可以通过Hive查询来完成,因为没有太多方法可以进行Cassandra排序 2. Resultset只是一个游标。它不会将整个数据收集到内存中,只收集一些记录(可配置) 3. 1M或记录它不是一个巨大的数据,但是,如果你想处理数十亿条记录,那就是它。但是,由于每个案例都具体,我无法为您提供解决所有涉及大量数据的问题的灵丹妙药。

无论如何,对于你的情况,我有一些顾虑:
我没有关于Cassandra最新JDBC驱动程序功能和限制的详细信息 您尚未提供表结构和未来数据增长及复杂性的详细信息。我的意思是现在你在一个数据库中拥有1M行和10列,但是后来你可以在10个Cassandra节点的集群中拥有100M行。
如果这不是问题,那么您可以尝试解决方案。否则,为了简单比较,我建议做以下事项:
1.将Cassandra的数据导出到Hive 2.比较两个Hive表中的数据 我相信这将是直截了当的,更加强大。

但是上述所有内容都没有解决有关您的任务的工具(Hive和Cassandra)选择的问题。您可以找到有关典型Cassandra使用案例here的更多信息,以确保您做出了正确的选择。

答案 1 :(得分:0)

如果您正在寻找最新的cassandra JDBC驱动程序,Progress DataDirect会提供一个:https://www.progress.com/jdbc/apache-cassandra。如果您有任何具体问题或疑问,请查看我们的技术规格并告诉我。