首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Athena -查询从Glue crawler生成的大型外部表?

AWS Athena -查询从Glue crawler生成的大型外部表?
EN

Stack Overflow用户
提问于 2019-09-26 02:54:33
回答 2查看 810关注 0票数 0

我在亚马逊网络服务s3上有一大堆历史日志文件,总共有几十亿行,

我使用了一个带有grok反序列化程序的胶水爬虫在雅典娜上生成了一个外部表,但是查询它被证明是不可行的。

我的查询超时了,我正在尝试寻找另一种方法来处理这些数据。

据我所知,通过Athena,外部表不是实际的数据库表,而是文件中数据的表示,并且查询是在文件本身上运行的,而不是数据库表。

如何将这个大型数据集转换为查询友好的结构?

编辑1:为了澄清,我对重塑这里的日志文件不感兴趣,那些已经处理好了。相反,我想要一种方法来处理我在s3上现有的文件库。我需要查询这些旧的日志,在它当前的状态下这是不可能的。我正在寻找一种方法,要么将这些文件转换为最佳格式,要么利用当前的外部表进行查询。

现在,在爬虫的默认情况下,外部表只按天和实例进行分区,我的grok模式将格式化的日志分解为更多的列,如果可能的话,我希望在这些列上重新分区,我相信这将使我的查询更容易运行。

EN

回答 2

Stack Overflow用户

发布于 2019-09-26 11:42:25

你的where condition应该在分区上(至少有一个条件)。通过发送支持票证,您可能会增加雅典娜超时。或者,您可以使用Redshift Spectrum

但是你可能会认真地去优化查询。雅典娜查询超时时间为30分钟。这意味着您的查询在超时之前运行了30分钟。

票数 0
EN

Stack Overflow用户

发布于 2019-09-26 14:09:54

默认情况下,雅典娜会在30分钟后超时。此超时期限可以延长,但可以向AWS团队提出支持工单。但是,您应该首先优化您的数据和查询,因为30分钟是执行大多数查询的好时间。

以下是一些优化数据的技巧,它们将大大提升雅典娜的性能:

parquet使用像orc/这样的列式格式与压缩来存储你的data.

  • Partition你的数据。在您的情况下,您可以根据year -> month -> day对日志进行分区。
  • 为每个分区创建更多和更少的文件,而不是创建更少和更多的文件。

以下AWS文章提供了有关amazon athena中性能调整的详细信息

Top 10 performance tuning tips for amazon-athena

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58104891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档