Amazon AWS Athena S3 和 Glacier 混合存储桶
Posted
技术标签:
【中文标题】Amazon AWS Athena S3 和 Glacier 混合存储桶【英文标题】:Amazon AWS Athena S3 and Glacier Mixed Bucket 【发布时间】:2017-06-11 07:16:47 【问题描述】:带有 S3 Glacier 的 Amazon Athena 日志分析服务
我们在 S3 中有数 PB 的数据。我们是https://www.pubnub.com/,我们将使用数据存储在我们网络的 S3 中以用于计费目的。我们将制表符分隔的日志文件存储在 S3 存储桶中。 Athena 给我们一个 HIVE_CURSOR_ERROR
失败。
我们的 S3 存储桶设置为在 6 个月后自动推送到 AWS Glacier。除了 Glacier 备份文件之外,我们的存储桶还有热的 S3 文件并且可以读取。因此,我们从 Athena 收到访问错误。错误中引用的文件是 Glacier 备份。
我的猜测是:不要将冰川备份保存在同一个存储桶中。由于我们的数据量大小,我们无法轻松使用此选项。我相信 Athena 在此设置中无法工作,我们将无法使用 Athena 进行日志分析。
但是,如果我们可以使用 Athena,我们会很高兴。 HIVE_CURSOR_ERROR
是否有解决方案以及跳过 Glacier 文件的方法?我们的 s3 存储桶是一个扁平存储桶没有文件夹。
上面和下面的屏幕截图中显示的 S3 文件对象名称已从屏幕截图中省略。 HIVE_CURSOR_ERROR
中的文件引用实际上是 Glacier 对象。您可以在我们的 S3 存储桶的屏幕截图中看到它。
请注意,我尝试在 https://forums.aws.amazon.com/ 上发帖,但那不是 bueno。
【问题讨论】:
我认为这可能是 Athena 中的一个错误。在 Athena 文档中,他们没有提到 Glacier。 我添加了更多细节,显示我们的 s3 对象文件名实际上处于冰川对象状态。 您可以使用 Glacier Select 和 SQL docs.aws.amazon.com/amazonglacier/latest/dev/… 连冰川还原都不行? 【参考方案1】:2017 年 5 月 16 日的 documentation from AWS 明确指出 Athena 不支持 GLACIER 存储类:
Athena 不支持 LOCATION 指定的存储桶内的不同存储类别 子句,不支持 GLACIER 存储类,不支持 Requester Pays 桶。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南中的 Storage Classes、Changing the Storage Class of an Object in |S3| 和 Requester Pays Buckets。
我们也对此感兴趣;如果你让它工作,请告诉我们如何。 :-)
【讨论】:
谢谢!这是有道理的。顺便说一句,我们已经成为 Athena 用户专家。 Presto 很棒。 @StephenBlum presto 为您解决了这个问题吗?如果是这样,怎么做?我们面临同样的问题。 @killdash9 我们创建了一个带有/Year/Month/Day/Hour/
分区的新存储桶。这解决了问题!【参考方案2】:
由于the release of February 18, 2019 Athena 将忽略具有 GLACIER 存储类的对象,而不是使查询失败:
[...] 作为解决此问题的结果,Athena 会忽略转换到 GLACIER 存储类的对象。 Athena 不支持从 GLACIER 存储类中查询数据。
【讨论】:
您可以使用 Glacier Select 和 SQL docs.aws.amazon.com/amazonglacier/latest/dev/…【参考方案3】:您必须有一个 S3 存储桶才能使用。此外,您用于启动 S3 Glacier Select 作业的 AWS 账户必须具有 S3 存储桶的写入权限。 Amazon S3 存储桶必须与包含正在查询的存档对象的文件库位于同一 AWS 区域。
S3 glacier select 运行查询并存储在 S3 存储桶中
归根结底,您必须将数据移动到 S3 buck 中才能使用 S3 glacier select 语句。然后在“新”S3 存储桶上使用 Athena。
【讨论】:
以上是关于Amazon AWS Athena S3 和 Glacier 混合存储桶的主要内容,如果未能解决你的问题,请参考以下文章
AWS S3 Select 和 AWS Athena 有啥区别?
Amazon athena 无法读取 S3 Access 日志文件,Athena 选择查询为每一列返回空结果集