Использование Snowpipe - Какая лучшая практика для загрузки небольших файлов. например. Тысячи файлов 4K в день? - PullRequest
1 голос
/ 11 февраля 2020

Вопросы

  1. Насколько дороже загружать небольшие файлы (например, 4K) с использованием Snowpipe, чем, скажем, 16K, 500K или 1-10Mb ( рекомендуемый размер файла). Примечание. Этот вопрос подразумевает, что загрузка небольших файлов обходится дороже, чем рекомендуемых 1-10 МБ.

  2. Понимание того, что рекомендуется загружать файлы размером 1-10 МБ, но мне нужно Near Real -Время доставки (несколько минут). Я мог бы объединить файлы, чтобы сделать их больше, но не могу ждать более 60 секунд, прежде чем отправить микропакет на S3 и, следовательно, на Snowpipe. В настоящее время я пишу все, что у меня есть, каждые 30 секунд, но я вижу отчеты Snowpipe каждые 60 секунд. Означает ли это, что нет смысла записывать файлы в S3 чаще, чем за 60 секунд? ie. Если я отправляю файл каждые 30 секунд, уменьшится ли средняя задержка или составит 60 секунд минимального цикла Snowpipe.

  3. Загрузка файлов 4 КБ (около 200 МБ в день по 4 КБ на файл), это стоит около 20 кредитов за гигабайт, что очень дорого. Какую стоимость следует ожидать за гигабайт при использовании Snowpipe, если я загружаю (например) файлы CSV в диапазоне 1-10 МБ? Снизится ли моя цена за гигабайт, если я останусь в диапазоне 1–10 Мб? Примечание. В настоящее время с помощью Snowpipe в формате Parquet используется VARIANT, затем используются STREAMS и TASKS для реструктуризации данных для анализа практически в реальном времени. Поймите, что дешевле использовать Snowpipe, чем виртуальный склад. Это правда? Я подозреваю, что реальный ответ "это зависит". Но «зависит от того, что».

  4. В дополнение к моим требованиям, близким к реальному времени, у меня есть несколько систем, обеспечивающих пакетную подачу (формат CSV, примерно раз в 4 часа, ожидаемая задержка) в течение 30 минут для обработки и представления для анализа. Размеры файлов здесь варьируются, но большинство из них имеют диапазон от 1 МБ до 1 ГБ. Должен ли я использовать одно и то же решение Snowpipe или мне лучше организовать работу из Airflow и использовать команду COPY, за которой следует SQL Заявления о выделенном виртуальном хранилище? Или, действительно, какую альтернативу вы бы порекомендовали?

  5. Я вижу, что Snowpipe загружает файлы 4K дороже и, вероятно, дешевле, чем файлы большего размера. по размеру они снова станут дороже? IE. Является ли стоимость "кривой колокольчика" или она сглаживается?

Фон

  1. Я использую Snowpipe для доставки решения для загрузки данных почти в реальном времени (NRT).
  2. У меня есть данные, которые реплицируются с Kafka на S3 ar Извлекайте каждые 30 секунд из 30 таблиц, и он автоматически загружается в Snowflake с использованием Snowpipe.
  3. Данные передаются мне в формате Parqet, загружаются в Variant, а затем в представление для извлечения атрибутов в таблицу перед использованием. Задачи и SQL реструктурировать для анализа.
  4. За один день я обнаружил, что загружено 50 000 файлов, размер файла меняется, но средний размер файла составляет 4 КБ на файл.
  5. Я вижу, как загружается около 30 файлов в минуту (ie. Загружается около 100K в минуту).
  6. Я пытаюсь сбалансировать несколько нефункциональных требований. а) Эффективное использование кредитов. Знание небольших файлов стоит дорого. б) Уменьшить задержку (я пытаюсь получить конвейер максимум 2-5 минут максимум от Кафки до приборной панели). c) Простота - IE. Это должно быть легко понять и поддерживать, так как я ожидаю, что решение будет расти МАССИВНО - IE. От около 20 таблиц до многих сотен таблиц - все нуждающиеся в режиме реального времени
  7. Я буду (в течение следующих 3 месяцев) получать пакетную загрузку CSV каждые 4 часа. Они являются полностью независимыми источниками данных (от NRT) и имеют гораздо более интенсивную обработку и ELT. Мне интересно, стоит ли мне использовать Snowpipe или COPY для них.
...