【发布时间】:2019-12-09 22:16:57
【问题描述】:
我在 S3 上有大约 300 GB 的数据。假设数据如下所示:
## S3://Bucket/Country/Month/Day/1.csv
S3://Countries/Germany/06/01/1.csv
S3://Countries/Germany/06/01/2.csv
S3://Countries/Germany/06/01/3.csv
S3://Countries/Germany/06/02/1.csv
S3://Countries/Germany/06/02/2.csv
我们正在对数据进行一些复杂的聚合,并且由于某些国家/地区的数据很大而某些国家/地区的数据很小,因此 AWS EMR 没有意义使用,因为一旦小国完蛋了,资源就被浪费了,而大国还要长期运转。因此,我们决定将 AWS Batch(Docker 容器) 与 Athena 一起使用。每个国家/地区的一项工作需要一天的数据。
现在大约有 1000 个作业一起开始,当它们查询 Athena 以读取数据时,容器因达到 Athena 查询限制而失败>。
因此,我想知道解决此问题的其他可能方法是什么?我是否应该使用 Redshift 集群,将那里的所有数据和所有容器查询加载到 Redshift 集群,因为它们没有查询限制。但它很昂贵,而且需要很长时间才能完成。
另一种选择是读取 EMR 上的数据并在其上使用 Hive 或 Presto 来查询数据,但同样会达到查询限制。
如果有人能提供更好的选择来解决这个问题,那就太好了。
【问题讨论】:
-
我相信您已经想到了这一点,但如果由于某种原因您还没有想到,请确保您根据国家和日期对表进行分区。对于这个用例,它将大大加快查询速度并降低成本。
-
@Theo 实际上是的,我也已经问过这个问题。这里是:stackoverflow.com/questions/57287621/… 但没有得到任何回应。问题是我们从其他来源获取这些数据,我们无法控制他们如何写入数据。所以我需要找到其他方法来读取这些数据并将其作为分区表。
-
@Theo 如果您也能就此提供一些见解,那就太好了。
-
我会尽量回答这个问题,谢谢你的链接。我没有看到它,因为它没有标记
amazon-athena,我也将添加该标记。 -
@谢谢。非常感谢!。
标签: amazon-web-services amazon-s3 amazon-redshift amazon-emr amazon-athena