2015-12-13 2 views
0

У меня есть ночной процесс, который длится около 18 часов. Суть операции заключается в том, что опробованная служба опроса опрошена, данные затем применяются к моей собственной базе данных - не как 1 к 1, а массированы, сравниваются и снижаются при необходимости (так что есть сравнение и бит других функции, связанные с формированием плоских файлов в реляционную структуру).Быстрая синхронизация данных с таблицей DB от csv

Восходящий поток согласился предоставить нам один, довольно большой файл csv ночью, вырезая время опроса.

Я думаю использовать Spark/hdfs для распространения этого процесса ночной синхронизации/слияния. Однако мне интересно, как лучше всего это сделать? Поскольку моя собственная база данных будет забита, если я часто ее запрашиваю для сравнения, вставки и т. Д.

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

ответ

0

Мое предложение:
1, Извлечь первичный ключ из большого CSV-файла и вашей базы данных и сохранить их в разделенные ключевые файлы K1, K2;
2, сравнение в памяти K1 и K2 с использованием искры и вычисление флага вставки/обновления для набора K1, выход (k1, флаг вставки/обновления); также обновить K2, чтобы ускорить следующий расчет;
3, Вставить/обновить базу данных с оптимизированным подходом.

Сравнительный процесс (шаг 2) очень полезен для базы данных. Перемещение его на большую платформу данных облегчит базу данных.

+0

Спасибо за ответ. Проблема заключается в том, что первичные ключи восходящего канала и наши локальные первичные ключи совершенно разные - просто потому, что данные хранятся в разных структурах. Таким образом, сравнения выполняются по составным ключам сортировки, где для проверки кортежа мы сравниваем все параметры кортежей. Что делать, если у вас есть целые кортежи для сравнения? Насколько эффективна память? – BKaun

Смежные вопросы