От S3 до снежинки и производительности - PullRequest
0 голосов
/ 08 января 2020

У меня огромное количество событий, хранящихся в S3 в виде небольших JSON файлов. теперь мне нужно вставить эти файлы в Snowflake, используя Snowpipes. есть ли проблемы с производительностью в отношении количества запросов, отправляемых в Snowflake? Должен ли я объединить эти крошечные файлы в больший JSON и затем позволить Снежинке проглотить его?

Я знаю, что Снежинка может автоматически обнаруживать изменения на S3 и пытаться обновить sh его внешних таблиц, но я позволю маленькие файлы постоянно запускают этот процесс или нет?

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Да, существует ограничение на количество запросов API, которые могут быть сделаны. Этот уровень существует на уровне учетной записи, а не на уровне пользователя или канала. У каждой конечной точки есть свой банк токенов.

loadHistoryScan:

Запускается с 20 000 токенов.
1 токен, потребляемый за вызов
5, пополняется для каждого загруженного файла
1 пополняется каждую минуту


ingestFile:

Начинается с unknown
1 токена, использованного для файла
15 000, пополняемых каждую минуту

Для конечной точки ingestFile 1 токен используется для каждого файла в вызове API , это верно, если вы отправляете 5000 вызовов одним файлом ИЛИ одним вызовом 5000 файлов.

Важно, чтобы вы не отправляли повторно те же файлы, которые будут использовать токен для каждого из этих повторно отправленных файлов, но табличная функция copy_history не сообщает вам, пропустил ли канал файл.


insertReport:

Начинается с unknown
1 токена, потребляемого на вызов
Скорость пополнения unknown


Максимальное количество токенов, которое может иметь учетная запись в любое время, составляет 100 000; как только вы достигнете этой точки, пополнение прекращается, пока вы не начнете делать вызовы API и снова использовать токены.

Snowflake рекомендует для загрузки загружать файлы размером от 10 МБ до 100 МБ сжатый . Если ваши требования позволяют вам объединить эти небольшие файлы в более крупный, то да, я бы порекомендовал такой подход.

2 голосов
/ 08 января 2020

Снежинка Имеет некоторую документацию, которая должна ответить на этот вопрос очень хорошо здесь . Короче говоря: в идеале ваши файлы большие, но не такие большие и / или сложные, что их обработка занимает больше минуты.

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

Еще одно замечание: Цена Snowpipe включает в себя количество загруженных файлов, поэтому вы можете рассчитывать на некоторую экономию средств, объединяя крошечные файлы вместе. .

...