загрузка большого количества маленьких файлов в снежинку - PullRequest
0 голосов
/ 18 июня 2020

Я установил ведро с множеством маленьких XML файлов, которые нужно загрузить в снежинку с помощью Snowpipe. Но у меня есть ~ 5 миллионов маленьких файлов (по одному файлу в строке), которые нужно загрузить в снежинку. У меня есть список этих файлов, которые нужно загрузить в снежинку. Я понимаю, что это не оптимальная ситуация, но что, если я могу сделать это более приемлемым? Каковы последствия выполнения 5 миллионов команд копирования с точки зрения выставления счетов? Что я могу сделать здесь, чтобы снизить стоимость? Может быть, предварительно обработать XML в один файл? Стоит потраченных усилий с точки зрения экономии?

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

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

Кроме того, накладные расходы связаны с количеством файлов напрямую:

Помимо потребления ресурсов, накладные расходы включены в стоимость использования Snowpipe: 0,06 кредита на 1000 файлов, о которых сообщается или указывается в уведомлениях о событиях или вызовах REST API. Эти накладные расходы взимаются независимо от того, привели ли уведомления о событиях или вызовы REST API к загрузке данных.

Для ~ 5 миллионов файлов это ~ 300 кредитов на плату за использование при использовании Snowpipe, помимо фактических вычислений. кредиты.

Что-нибудь я могу сделать, чтобы снизить стоимость здесь? Может быть, предварительно обработать XML в один файл?

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

Имейте в виду, что ни одна отдельная XML строка документа не может превышать 16 МБ .

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

0 голосов
/ 18 июня 2020

Рекомендация по загрузке от Snowflake - размер сжатого файла 10-100Мб. У вас может быть много файлов, но если они слишком большие или слишком маленькие, это не будет работать оптимально.

Формат файла CSV работает лучше всего, так что теперь вы можете подумать, что вы правильно его проектируете.

...