我们将相同的表复制到Hive、Teradata和vertica。你知道吗
我们必须测试并确认这些表是否在所有表之间完全复制。你知道吗
到目前为止,我们使用python将表下载到csv并进行比较,但是由于表的大小,我们发现这种方法存在困难。你知道吗
with open('hive.csv', 'r') as t1, open('teradat.csv', 'r') as t2:
hivedata = t1.readlines()
teradata = t2.readlines()
with open('differences.csv', 'w') as outFile:
for line in teradata:
if line not in hivedata:
outFile.write(line)
有人能提出在给定时间比较任意两个表的最佳方法吗。你知道吗
我可以使用python,spark/pyspark来实现这一点。你知道吗
要进行比较,必须始终将两个表的数据放在同一位置。你知道吗
Python方法将两个数据库中的所有数据带到第三个位置,这是最慢的方法。你知道吗
最好的方法是让所有参与计算的人都同意计算一个数字散列值,在所有的Hive、Teradata和Vertica中,该散列值将返回具有完全相同的表行数据的完全相同的整数。对每个平台上每个表上的所有哈希值求和,并在所有地方得到相同的结果,就足以表明数据是相同的。然而,有人可能会争辩说,您可能会遇到哈希冲突,因此这不是绝对准确的(即使哈希冲突的风险非常非常低)。你知道吗
如果您绝对有来比较实际的表数据-只将一个表的数据带到另一个数据库。在Vertica中(可能是最好的方法,因为这种类型的操作在性能上会非常出色),
CREATE TABLE cmp_<table_name> LIKE <table_name>;
,然后找到最快的方法将数据从其他数据库传输到Vertica。在单个线程中导出到CSV通常不是最快的。考虑几个并行作业,每个作业处理表数据的子集。考虑一下并行处理的程序,读入内存并使用内存在非常大的数组中用参数标记填充INSERT。最后,SELECT * FROM <table_name> EXCEPT SELECT * FROM cmp_<table_name>;
。该查询应返回一个空行集。你知道吗祝你好运-
相关问题 更多 >
编程相关推荐