我使用以下代码从bucket数据创建表。
CREATE EXTERNAL TABLE IF NOT EXISTS `acc_log_file_o`.`Acc_log_2022031502` (
`ad_id` string,
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = ',',
'field.delim' = ','
) LOCATION 's3://yyy.pixs/2022/03/15/02/'
TBLPROPERTIES ('has_encrypted_data'='false','compressionType'='gzip');
我的bucket每分钟更新一次,每小时创建一个文件夹。我想查询最后一个和倒数第二个文件夹。例如,如果现在的日期时间是03.15.22 06:34
我需要使用此URLs3://yyy.pixs/2022/03/15/06/
和s3://yyy.pixs/2022/03/15/05/
(单独查询倒数第二名就足够了(
我找到了以下解释,但我不明白我是否可以使用它以及如何使用它。https://docs.aws.amazon.com/es_es/databrew/latest/dg/datasets.multiple-files.html
Amazon Athena将自动搜索给定LOCATION
中的所有文件,包括所有子文件夹中的文件。无法指定要在哪些子文件夹中搜索文件。
然而,您可能会考虑在Athena-Amazon Athena中进行数据分区。这就是文件夹名称传达一些特定信息的地方(例如月或日(,而Athena只能智能地查找与WHERE
子句匹配的文件夹。这样,它可以跳过不包含相关信息的文件夹。
当数据通过Amazon Athena添加到分区表时,文件夹命名将由Athena自动处理。然而,如果数据存储在Athena之外,则需要"告知"Athena分区。因此,它比简单地将数据存储在新文件夹中稍微复杂一些。
您可能可以使用DataBrew将数据转换为合适的格式,但您链接的页面与Amazon Athena没有直接关系。