Непрерывная загрузка через Snowpipe / Внешний против Внутреннего - PullRequest
0 голосов
/ 24 октября 2019

У меня есть поставщик, который передает мне данные в реальном времени через SQS с данными CSV в теле сообщения. Это примерно одно сообщение в минуту. Размер тела может сильно различаться, но давайте предположим, что он меньше 512 МБ.

Сначала я подумал о написании лямбда-функции, которая вызывается их очередью SQS для загрузки в S3, а затем использует Snowpipe для внешней загрузки, ноэто кажется излишним для меня. Не проще ли было бы написать тело локально в / tmp и затем загрузить его изнутри?

Я склоняюсь к загрузке изнутри, поэтому я ищу убедительный аргумент для использования Snowpipe / load вместо этого,Чего бы мне не хватало, если бы я не использовал Snowpipe?

1 Ответ

1 голос
/ 24 октября 2019

Внутренняя загрузка, на которую ссылается ссылка на этот документ, берет файл, перемещает его на S3, а затем запускает копию в оператор. На самом деле нет большой разницы между этим и запросом SQS / Lamdba сохранить сообщение на S3 и использовать Snowpipe, чтобы загрузить его для вас. Я думаю, что более простым и эффективным решением было бы попросить Lambda сохранить данные на S3 (используя что-то вроде boto3) и загрузить их Snowpipe. С помощью вашего метода вы загружаете сообщение, сохраняя его в / tmp, только чтобы затем отправить его обратно на S3. Это больше движения данных.

Если бы эти сообщения были меньше по размеру, я бы порекомендовал вам использовать прямое соединение в вашей функции Lambda и использовать оператор вставки, но это намного медленнее, и записи объемом 300 тыс. слишком долго.

...