Для сравнения вы должны обязательно перенести данные двух таблиц в одно и то же место.
Ваш подход Python переносит все данные из обеих баз данных в третье местоположение, что является самым медленным из возможных подходов.
best - получить согласие всех вовлеченных людей на вычисление числового хеш-значения, которое во всех 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>;
. Этот запрос должен вернуть пустой набор строк.
Удачи -