Redshift Spectrum执行简单查询比Athena慢40倍以上问题排查
Redshift查询S3外部表性能远低于Athena的问题
问题现象
S3数据湖可通过Athena和Amazon Redshift查询,但执行相同逻辑的简单查询时,Redshift耗时远高于Athena。
Athena查询详情
CREATE TABLE x as (select p.anonymous_id, p.context_traits_email, p."_timestamp", p.user_id FROM foo.pages p)
- 运行时间:24.432秒
- 扫描数据量:111.47 MB
Redshift查询详情
create temp table x as ( select p.anonymous_id, p.context_traits_email, p."_timestamp", p.user_id FROM external_schema.pages p )
- 运行时间:17分钟
数据湖与Glue配置
数据湖关联由第三方工具RudderStack维护的Glue Catalog,无爬虫,RudderStack直接将Parquet文件存入S3指定路径,并在schema变更时更新Glue Catalog。Glue表关键配置如下:
- 存储位置:
s3://{bucketname}/rudder-datalake/{schemaname}/pages - 输入格式:
org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat - 输出格式:
org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat - Serde序列化库:
org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe - 无分区、无索引
Redshift外部Schema创建语句
create external schema if not exists external_schema from data catalog database 'foo' region 'us-east-1' iam_role 'arn:aws:iam::xxxxx';
补充信息
- Redshift集群为单d2.large节点,查询期间CPU利用率从未超过15%,无连接、去重等复杂操作
- 从Redshift的SVL_S3QUERY_SUMMARY视图得到的查询记录:
- external_table_name:
S3 Scan {redshiftdb}_external_schema_pages - 文件数:144,067
- 分片数:144,067
- 平均请求并行度:10
- external_table_name:
为何两者性能差异如此巨大?
内容的提问来源于stack exchange,提问作者Killerpixler
相关产品推荐
相关产品推荐

