AWS Athena问题 - 替代方案?

时间:2017-12-05 14:06:29

标签: amazon-web-services amazon-s3 amazon-emr amazon-athena

我们在S3中有许多GZIP CSV格式的文件(大约20k-30k文件)。 我们希望运行涉及所有文件的分析(非常简单)。

看起来像这样: S3://bucket-name/pt=something/dt=2017-01-01-00-00/1234/5432.csv.gz

我们尝试过:

  1. AWS EMR,但似乎非常非常慢,因为有很多小的 文件。我们尝试s3-dist-cp在进程之前合并它们但是它 仍然太慢(因为现在瓶颈是s3-dist-cp)
  2. 我们虽然雅典娜,但看起来好像这个工具 不像分区需要那样用于以编程方式执行 要一直添加。我们用pt和dt定义了分区 领域。但据我们所知,每个价值都需要加上 使用ALTER TABLE ADD PARTITION ...似乎不可扩展。
  3. 在许多S3文件上运行简单SQL查询的最佳选择是什么?

    谢谢!

1 个答案:

答案 0 :(得分:1)

Athena可能是您用例的绝佳工具,我想。我们将它用于针对存储在S3中的数据集的许多类型的查询。大多数是Parquet格式,有些是TSV。虽然我知道GZIP是受支持的SerDe,但我认为它不能被读作一系列单独的.gz文件。我们在大多数情况下使用Snappy进行压缩。在我们的使用中,至少,我们使用Hive(和合适的压缩SerDe)从Hadoop集群向S3写入文件,直接压缩。

但是,如果您能够在将文件复制到S3之前解压缩文件(并且可能将它们写入新的压缩格式),这可能会有效,并允许您使用Athena。 The S3 version of distcp有一个选项--outputCodec=CODEC和其他一些功能,可以让您通过一两个命令完成此任务。

最后,EMR将处理同样的问题 - EMR的默认查询引擎是Presto,这是Athena使用的。如果您以Hadoop可读格式将数据导入S3,您将有几个不错的选择。