首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >athena分区表

athena分区表
EN

Stack Overflow用户
提问于 2017-06-07 16:17:10
回答 3查看 9.6K关注 0票数 2

我试图按年、月、日划分亚马逊雅典娜查询的数据。但是,当我尝试从分区数据查询时,我无法获得任何记录。我遵循了在这个博客帖子中找到的说明。

创建表查询:

代码语言:javascript
复制
CREATE external TABLE mvc_test2 (
ROLE struct<Scope: string, Id: string>,
ACCOUNT struct<ClientId: string, Id: string, Name: string>,
USER struct<Id: string, Name: string>,
IsAuthenticated INT,
Device struct<IpAddress: string>,
Duration double,
Id string,
ResultMessage string,
Application struct<Version: string, Build: string, Name: string>,
Timestamp string,
ResultCode INT
)
Partitioned by(year string, month string, day string)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://firehose-titlesdesk-logs/Mvc/'

该表已成功创建,结果消息如下:

“查询成功。如果表有分区,则需要加载这些分区才能查询数据。您可以加载所有分区,也可以单独加载分区。如果使用load all分区(MSCK修复表)命令,分区必须采用Hive理解的格式。了解更多信息。”

正在运行

代码语言:javascript
复制
msck repair table mvc_test2;

我得到了结果:

“非亚稳态分区: mvc_test2:2017/06/06/21 mvc_test2:2017/06/06/22”

此时,当我试图查询表时,没有得到任何结果。

日志按年/月/日/小时以子文件夹格式存储。例如:'s3://firehose-application-logs/process/year/month/day/hour‘

如何正确地划分数据?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-08 00:30:15

您的目录格式似乎是2017/06/06/22。这与具有year=2017/month=06/day=06/hour=22命名转换的单元分区不兼容。

因此,数据的当前格式限制了您使用分区的能力。您需要重命名目录,或者(最好)通过HIVE处理数据,以便以正确的格式存储数据。

另见:使用Athena分析S3中的数据

票数 7
EN

Stack Overflow用户

发布于 2017-08-10 05:33:44

按日期添加每个分区。这样更快,而且节省了你更多的钱。只加载所需的分区,而不是所有分区。

代码语言:javascript
复制
ALTER TABLE mvc_test2 
ADD PARTITION (year='2017',month='06',day='06')
location 's3://firehose-titlesdesk-logs/Mvc/'

您可以通过根据需要更改年份、月份和/或日来加载更多的分区,只需确保它们是有效的。然后,您可以通过运行以下查询来检查以确保您的分区已加载:

代码语言:javascript
复制
show partitions mvc_test2
票数 6
EN

Stack Overflow用户

发布于 2021-03-25 07:46:24

AWS现在支持雅典娜分区投影,这将使分区管理自动化,并在添加新数据时自动添加新分区。

https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html#create-cloudtrail-table-partition-projection

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

https://stackoverflow.com/questions/44417971

复制
相关文章

相似问题

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