我正在使用Hive和Cassandra,表结构和数据在Hive和Cassandra中是相同的。将有近100万条记录。我的要求是我需要检查Cassandra和Hive中的每一行是否都有相同的数据。
答案 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。如果您有任何具体问题或疑问,请查看我们的技术规格并告诉我。