2017-02-01 8 views
2

Мне было предложено создать инструмент сверки, который мог бы сравнить два больших набора данных (мы можем предположить, что источник входных данных - два превосходных).Инструмент примирения [сравнение двух больших наборов данных]

Каждая строка в excel содержит 40-50 столбцов и запись для сравнения на каждом уровне столбца. Каждый файл содержит около 3 миллионов записей или примерно 4-5 ГБ данных. [Данные могут не отображаться в отсортированном формате]

Я был бы признателен, если бы мог получить некоторый намек. Может следующие технологии хорошо подходят

  1. Apache Spark
  2. Apache Спарк + Ignite [при условии реального времени примирения в между временными рамками]
  3. Apache Ignite + Apache Hadoop
  4. Любое предложение построить в инструмент.
+0

Не могли бы вы рассказать о средствах сравнения. –

+0

например, 2 больших сравнения csv, в которых говорится, что каждая строка соответствует, не соответствует каждой строке и готовит отчет для этого, не так ли? Если это так, вы можете использовать искру rdd load (используя sc.textfile) 2 файла на 2 rdds и сравнить простым способом –

+0

@@ Ram спасибо за ответ. В дополнение к этому нам также нужно создать отчет, поля которого не совпадают в записи. Отчет должен быть в следующем формате: 1. Левая мисс (т.е. записи csv1 отсутствуют справа) 2. Правая миссия (т. Е. Записи CSV2 отсутствуют в csv1) 3. Если записи доступны в обоих файлах csv (записи имеют уникальный идентификатор, говорят, что основной ключ в таблице), поля которых не совпадают. –

ответ

0

Я также работали над

кампании с такими же

Вы можете загрузить CSV файлы временных таблиц с использованием Pyspark/Scala и запроса поверх временных таблиц, созданных.

0

Сначала Внимание:

Дать инструмент согласования содержит много мелких раздражения и крайние случаи, такие как форматы дату, числовые форматы (запятые в цифрах, научные обозначения и т.д.), соединения ключей, пороги, игнорируя столбцы, игнорируя заголовки/нижние колонтитулы и т. д.

Если у вас есть только один файл, чтобы указать с четко определенными входами, подумайте о том, чтобы сделать это самостоятельно.

Однако, если вы, скорее всего, попытаетесь расширить его, чтобы быть более общим, тогда заплатите за существующее решение, если сможете, потому что он будет дешевле в долгосрочной перспективе.

Потенциальное решение:

Трудность с распределенным процессом, как вы подходите ключи в неупорядоченных файлах.

Проблема с запуском всего этого в одном процессе - это память.

Подход, который я использовал для коммерческого инструмента, заключался в том, чтобы сохранить CSV в таблицах в h2 и использовать SQL для выполнения diff.

H2 намного быстрее, чем Oracle, для чего-то подобного.

Если ваши данные хорошо структурированы, вы можете воспользоваться возможностью загрузки h2 непосредственно из CSV, и если вы сохраните результат в таблице, вы также можете записать вывод в CSV, или вы можете использовать другие Frameworks для записи более структурированный вывод или поток результата на веб-страницу.

Если ваш формат xls (x), а не CSV, вы должны выполнить тест производительности различных библиотек для чтения файла, так как существуют огромные различия при работе с этим размером.