Скопируйте таблицу транзакций Hadoop в снежинку - PullRequest
0 голосов
/ 23 января 2019

В настоящее время мы используем Hadoop и Snowflake для хранения наших данных.

Процесс состоит в том, чтобы скопировать файлы ORC Hadoop в папку Snowflake s3 с помощью DISTCP, а затем запустить таблицу копирования в Snowflake из S3.Это скопирует все, что есть в таблице Hadoop ORC, в таблицу Snowflake.

Теперь у меня есть новое требование, в котором моя таблица Hadoop является транзакционной таблицей, а существующие записи обновляются каждый час.Если я копирую файлы ORC на S3 и запускаю команду «Копировать», он добавляет дополнительные записи в существующую таблицу, а не обновляет существующие 1.

Как решить эту проблему в Snowflake?

1 Ответ

0 голосов
/ 24 января 2019

Обычно для таких целей используются три стратегии:

  • периодически перезагружать все - в зависимости от объема данных это может быть возможно и быстро (известно, что Snowflake может загружать несколько ТБ)в час).Вы можете использовать комбо из CREATE TABLE LIKE, COPY и SWAP для выполнения транзакций.
  • идентифицирует и экспортирует только новые строки - не знаю, какой у вас источник данных, но вы можетечтобы сделать это
  • при загрузке в Snowflake, не вставляйте существующие строки.У вас должен быть какой-то способ определить, какие строки одинаковы, например, поле идентификатора (или комбинация полей).Затем вы можете COPY во временную таблицу, а затем использовать MERGE для объединения новых / измененных строк (различные возможные варианты см. В документации)
...