Массовая загрузка в Amazon Redshift - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно ежедневно вставлять данные в AWS Redshift.Требуется проанализировать только ежедневную партию, вставленную в Redshift.Кластер Redshift используется инструментами BI для аналитики.

Вопрос:

Каковы оптимальные методы ежедневного обновления набора данных?Меня беспокоит, что это довольно тяжелая операция, и производительность будет плохой, но в то же время это довольно распространенная ситуация, и я полагаю, что это было сделано ранее несколькими организациями.

1 Ответ

0 голосов
/ 23 апреля 2019

Если данные находятся на S3, почему бы не создать над ним EXTERNAL TABLE.Затем, если скорость запроса по внешней таблице недостаточна, вы можете загрузить ее, используя оператор CREATE TABLE AS SELECT, во временную таблицу и, после загрузки, переименовать имя в обычное имя таблицы.

Набросок SQL:

CREATE EXTERNAL TABLE external_daily_batch_20190422 (
    <schema ...>
)
PARTITIONED BY (
    <if anything to partition on>
)
ROW FORMAT SERDE <data format>
LOCATION 's3://my-s3-location/2019-04-22';


CREATE TABLE internal_daily_batch_temp 
    DISTKEY ...
    SORTKEY ...
AS 
SELECT * from external_daily_batch_20190422;


DROP TABLE IF EXISTS internal_daily_batch__backup CASCADE;


ALTER TABLE internal_daily_batch rename to internal_daily_batch__backup;


ALTER TABLE internal_daily_batch_temp rename to internal_daily_batch;

Инкрементная загрузка невозможна?

Кстати, все ли ваши 10 ТБ данных могут изменяться?Возможно ли инкрементное обновление?

...