当java中有大约100万条记录时,如何比较hive和cassandra数据

31moq8wy  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(332)

我使用的是hive和cassandra,表结构和数据在hive和cassandra中是相同的。将有近100万张唱片。我的要求是,我需要检查每一行是否在cassandra和hive中都有相同的数据。
我可以直接比较两个resultset对象吗(一个结果集包含cassandra数据,另一个来自hive)
如果我们在resultset对象上迭代,resultset对象一次能保存一百万条记录吗?会不会有性能问题?
在处理如此庞大的数据时,我们需要注意什么?

9udxz4iz

9udxz4iz1#

嗯,一些初始条件对我来说似乎很奇怪。首先,1m记录对于现代rdbms来说并不是什么大问题,尤其是当我们不希望有实时查询响应时。第二,hive和cassandra表的结构是相同的。cassandra的范例是查询优先建模,它适用于除hive之外的一些场景。
但是,对于你的问题:
1.对。您可以编写java(正如我在标记列表中看到的java)程序,它将通过jdbc连接到hive和cassandra,并逐个比较resultset项。
但是你需要确保hive和cassandra的项目顺序是相同的。这可以通过配置单元查询来完成,因为没有太多的方法来执行cassandra排序。
2.结果集只是一个游标。它不收集内存中的全部数据,只收集一些批记录(它是可配置的)。
3.1m或记录它不是一个巨大的数据,但是,如果你想处理数十亿的记录,那就是它。但我不能给你提供一个银弹来回答所有的问题处理巨大的数据,因为每个案件都是具体的。
不管怎样,对于你的情况,我有一些担心:
我没有最新的Cassandra的jdbc驱动程序功能和限制的细节。
您还没有提供表结构以及未来数据增长和复杂性的详细信息。我的意思是,现在在一个数据库中有1百万行10列,但是稍后在10个cassandra节点的集群中可以有100万行。
如果这不是问题,那么你可以试试你的解决方案。否则,为了比较简单,我建议您执行以下操作:
1.将cassandra的数据导出到hive。
2.比较两个配置单元表中的数据。
我相信这将是直截了当的,而且更加有力。
但是以上这些并没有说明为您的任务选择工具(hive和cassandra)的问题。您可以在这里找到更多关于典型cassandra用法的案例,以确保您做出了正确的选择。

相关问题