Redshift Spectrum Performance против Афины - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть корзина в S3 с паркетными файлами и разбитая по датам.

С помощью следующего запроса:

select
    count(1)
from logs.logs_prod
where partition_1 = '2019' and partition_2 = '03'

При непосредственном выполнении этого запроса в Афине он выполняется менее чем за 10 секунд.Но когда я выполняю тот же запрос в Redshift, он занимает более 3 минут.Они оба возвращают одно и то же правильное значение, и в этом случае в этом разделе меньше 80 тысяч строк.

Я использую AWS Glue в качестве хранилища метаданных как для Athena, так и для Redshift.

План запроса для Redshift следующий:

QUERY PLAN
XN Limit  (cost=250000037.51..250000037.51 rows=1 width=8)
  ->  XN Aggregate  (cost=250000037.51..250000037.51 rows=1 width=8)
        ->  XN Partition Loop  (cost=250000000.00..250000035.00 rows=1000 width=8)
              ->  XN Seq Scan PartitionInfo of logs.logs_prod  (cost=0.00..15.00 rows=1 width=0)
                    Filter: (((partition_1)::text = '2019'::text) AND ((partition_2)::text = '03'::text))
              ->  XN S3 Query Scan logs_prod  (cost=125000000.00..125000010.00 rows=1000 width=8)
                    ->  S3 Aggregate  (cost=125000000.00..125000000.00 rows=1000 width=0)
                          ->  S3 Seq Scan logs.logs_prod location:"s3://logs-prod/" format:PARQUET  (cost=0.00..100000000.00 rows=10000000000 width=0)

Является ли эта проблема проблемой конфигурации Redshift Spectrum?Возможно ли, что запрос в Redshift не будет выполняться близко к Афине?

1 Ответ

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

Не думаю, что вы должны придавать слишком большой вес этому тесту.С точки зрения плана, похоже, что он не использует тот факт, что файлы Parquet содержат метаданные о количестве строк в каждом файле - это то, что, как я полагаю, может сделать Athena / Parquet.

Реальная реальная производительностьСравнение Athena и Redshift Spectrum сложно измерить, поскольку с помощью Athena вы не знаете, какую емкость вы получаете (но это много), а в Redshift Spectrum вы получаете выделенную емкость, которая зависит от размера вашего кластера.Я обнаружил, что для кластеров Redshift с ~ 20 процессорами Athena работает лучше для большинства запросов, но более крупные кластеры Redshift могут повысить производительность.

...