Как мне загрузить большое количество маленьких CSV-файлов из s3 в красное смещение? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть большое количество файлов CSV (~ 12k), которые являются маленькими (~ 250 записей каждый).Я хочу загрузить их в кластер красного смещения размера 3 в том же регионе, но это занимает очень много времени.

Запрос, который я использовал в SQL Workbench / J:

copy gsod from 's3://[path to folder]' access_key_id '******' secret_access_key '******' delimiter ',' BLANKSASNULL emptyasnull IGNOREHEADER 1 maxerror as 100000;

Запрос работает в считанные секунды, если я использую один файл.Но какой лучший способ загрузить их все как можно быстрее?

Я попытался загрузить файлы из s3 из того же региона кластера.

copy gsod from 's3://[path to folder]' access_key_id '******' secret_access_key '******' delimiter ',' BLANKSASNULL emptyasnull IGNOREHEADER 1 maxerror as 100000;

1 Ответ

0 голосов
/ 05 февраля 2019

Перейти к manifest опции файла.Это будет действительно быстро.

https://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html

  {
"entries": [
{"url":"s3://mybucket-alpha/2013-10-04-custdata", "mandatory":true},
{"url":"s3://mybucket-alpha/2013-10-05-custdata", "mandatory":true},
{"url":"s3://mybucket-beta/2013-10-04-custdata", "mandatory":true},
{"url":"s3://mybucket-beta/2013-10-05-custdata", "mandatory":true}
]}

Это будет делать copy параллельно, и вместо обработки файлов один за другим, все файлы будут загружены в одинпопытка.

copy customer from 's3://mybucket/your-manifest-file' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Надеюсь, эта помощь.

...