由于从rdbms(oracle/teradata)到hdfs(hive)的数据迁移,要求将rdbms的完整数据集与hive数据集进行比较,我知道从rdbms/hive带来大量数据是一个很大的网络开销,但这是要求,我在eclipse中开发了一个基本的java框架,它将接受源查询和目标查询(具有有限的行),并通过获取rdbms和hive结果集进行并排比较,但是为了使它更全面地验证,我必须比较两个系统的键,并检查两个系统中的重复项,以下是我迄今为止尝试过的东西:
初始化两个hashmaps一个用于rdbms,一个用于hive,然后将pk作为键,将arraylist中的非键属性作为值。现在使用两个hashmaps来比较它之间的键/值。但是在ram中加载两个结果集和哈希Map会降低性能。
尝试使用redis内存数据库来存储键/值对,但是当我试图通过java程序访问redis时,不确定如何使用redis hashmaps/hashset,就像我们在java中使用的那样。
将结果集写入两个不同的文本文件,但写入文件和读取/处理非常耗时。
对于从rdbms中获取部分数据,我已经做了这里提到的事情,我想可能有一些工具可以完成这项工作,但我正在尝试在开源中开发一些东西。
1条答案
按热度按时间5us2dqdw1#
您的数据是否有时间戳或任何可用于排序数据的递增值,或者一个数据源中的一个重复元素是否可以位于另一个数据源中的任何位置?如果需要对数据进行排序(如时间戳),则可以使用任何类型的流系统,并“简单”执行不同的选择。但是,需要更多有关正在处理的数据类型的信息。