0

我正在使用Redhshift谱。我创建了一个外部表格,并在S3上传了一个csv数据文件,其中包含大约550万条记录。如果在这个外部表上触发一个查询,它会花费大约15秒,而如果我在Amazon Redshift上运行相同的查询,我在〜2秒内得到相同的结果。 AWS宣称它是非常高性能的平台,这可能是导致性能滞后的原因。请使用频谱建议解决方案以获得相同的性能Redshift Spectrum的性能问题

+1

我没有太多的Redshift Spectrum经验,但这似乎完全合理?不同之处在于Redshift由实例或EBS硬盘支持,Spectrum运行在S3上。我不希望他们具有可比性。 Spectrm专为PB和以上分析而设计,在Redshift或Hadoop中甚至不可能接近。 – Henry

回答

2

为了您的性能优化,请查看http://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-external-performance.html以了解您的查询。

现在,如果您没有单个CSV文件但是多个文件,效果最佳。通常情况下,如果每个查询的文件数量至少比您的群集的节点数量大一个数量级,则可以说您获得了出色的性能。另外,如果你使用Parquet文件,你可以在S3上获得柱状格式的优势,而不需要阅读从S3读取整个文件的CSV文件 - 并且降低了你的成本。

您可以使用下面的脚本把数据转换为实木复合地板:

https://github.com/awslabs/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion

+0

是否有任何在线csv拼花转换器可用。? –

+0

你可以试试这个:https://github.com/awslabs/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion – grundprinzip

0

这些结果是可以预料的。使用Amazon Redshift的全部理由是它以高度优化的方式存储数据以提供快速查询。存储在Redshift之外的数据不会以接近最快的速度运行。

Amazon Redshift Spectrum的目的是提供对存储在Amazon S3中的数据的访问,而无需将其加载到Redshift(类似于Amazon Athena),但它没有任何性能保证。

1

我有点晚回答这个问题。截至2018年2月,AWS支持AWS Spectrum查询柱状格式的文件,如Parquet,ORC等。在您的情况下,您将文件存储为.CSV。 CSV是基于行的,这会导致查询任何字段的整行。在查询之前,我会建议您将.csv中的文件转换为Parquet格式。这肯定会带来更快的性能。来自AWS的详细信息在 https://aws.amazon.com/redshift/spectrum/

+0

Spectrify可能对此有用:https:// github的.com/hellonarrativ/spectrify –