Как лучше всего программно загружать данные в MemSQL из S3 или Azure?

Мне нужно загрузить данные (в виде CSV или TSV) из некоторого пути в корзине Amazon S3 в некоторые таблицы MemSQL. В будущем может потребоваться загрузка данных из хранилища BLOB-объектов Azure. Есть два способа, которые я знаю, чтобы сделать это:

  • Конвейер MemSQL
  • Загрузчик MemSQL (устарело)

Вот плюсы и минусы двух подходов, которые необходимо учитывать:

  • MemSQL Конвейер. Если мы создадим конвейер вручную, он будет автоматически продолжать выполнять свою работу. Однако постоянное поддержание конвейера в рабочем состоянии приведет к трате системных ресурсов (ОЗУ). Также новые файлы, содержащие данные для загрузки в MemSQL, будут добавляться в S3 только в определенное время дня (через какое-то задание cron). Итак, я хочу программно создать конвейер (используя JDBC), если он не существует, запустить конвейер, а затем остановить его после успешной загрузки всех данных (также обработать ошибки, если они есть во время процесса). Этот процесс будет выполняться как ежедневное задание cron. Однако я не смог найти способ узнать, все ли данные синхронизированы или нет. Также я не мог найти хорошего способа узнать, произошла ли какая-либо ошибка в процессе.

  • MemSQL Загрузчик — загрузчик MemSQL отправляет статус после завершения загрузки нужных данных. Итак, я могу выполнить вышеупомянутую работу внутри задания cron. Однако, поскольку загрузчик MemSQL устарел, я не хочу его использовать.

Пожалуйста, предложите лучший способ загрузки данных в таблицы MemSQL. Также, пожалуйста, дайте мне знать, если есть другие способы сделать то же самое (кроме конвейера и загрузчика).

Заранее спасибо.


person utsav_deep    schedule 05.05.2018    source источник
comment
Учитывая, что один устарел, а другой нет, ваш выбор должен быть ясен... используйте тот, который не устарел.   -  person Mark Rotteveel    schedule 06.05.2018
comment
@MarkRotteveel Для конвейера MemSQL я также сказал, что не смог найти способа узнать, все ли данные синхронизированы или нет. Также я не мог найти хорошего способа узнать, произошла ли какая-либо ошибка в процессе. Пожалуйста, помогите мне, как с этим бороться.   -  person utsav_deep    schedule 06.05.2018


Ответы (1)


MemSQL Pipelines идеально подходят для вашей рабочей нагрузки. Как вы упомянули, S3 и Azure Pipelines будут автоматически загружать для вас новые файлы по мере их появления. Когда конвейер не загружает данные, он не будет использовать системные ресурсы, кроме очень небольшого количества метаданных. Это специально разработано для того, чтобы вам не нужно было вручную настраивать задание хрона для загрузки ваших данных. При необходимости вы также можете остановить загрузку новых файлов через STOP PIPELINE.

В базе данных information_schema есть таблицы, которые позволят вам увидеть состояние всех ваших конвейеров и все обнаруженные ошибки. В частности, вам нужно запросить PIPELINES_ERRORS для получения ошибок.

person Rob Walzer    schedule 06.05.2018