Python 如何在Hive和Teradata之间比较同一个表

Python 如何在Hive和Teradata之间比较同一个表,python,hive,comparison,teradata,vertica,Python,Hive,Comparison,Teradata,Vertica,我们将相同的表复制到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('di

我们将相同的表复制到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方法将两个数据库中的所有数据都带到第三个位置,这是最慢的方法

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)
最好是让所有相关人员都同意计算一个数字散列值,在所有Hive、Teradata和Vertica中,该散列值将返回完全相同的整数和完全相同的表行数据。对每个平台上每个表上的所有哈希值求和,并在所有地方得到相同的结果,这足以表明数据是相同的。然而,有人可能会争辩说,您可能会遇到哈希冲突,因此即使哈希冲突风险非常非常低,这也不是绝对准确的

如果您必须比较实际的表数据,请只将一个表的数据带到另一个数据库。在Vertica中,可能是最好的解决方案,因为这种类型的操作在性能上会非常出色,创建类似cmp的表;,然后找到最快的方法将数据从另一个数据库传输到Vertica。在单个线程中导出到CSV通常不是最快的。考虑几个并行作业,每个作业都处理表数据的子集。考虑并行的程序,读入内存并使用该内存填充具有参数标记的插入,在非常大的数组中。最后,选择*FROM,除了选择*FROM cmp。该查询应返回一个空行集

祝你好运-