我从一位前同事那里继承了一个S3存储桶,其中的文件按ID和时间进行分区,例如:
s3:// bucket / partition_id = 0 / year = 2017 / month = 6 / day = 1 /文件
所有这些文件中的数据都是一张表,可以通过Athena查询。从Glue目录中,它还显示partition(0)是id,partition(1)是year,依此类推。
最近我想重新构建工作,并发现使用id的分区不是很简单。我尝试使用Glue搜寻器并将其定向到S3存储桶。但是,如果我只希望它随时间而不是id进行分区,那么我将无处选择:
s3:// bucket / year = 2017 / month = 6 / day = 1 /文件
我对AWS相当陌生,不确定是否有可能甚至对您有意义。请给我一些反馈。谢谢。
答案 0 :(得分:1)
我不认为您可以借助搜寻器来做到这一点,但是您可以像这样在Athena中手动创建新表(另请参见https://docs.aws.amazon.com/en_us/athena/latest/ug/ctas-examples.html)
CREATE TABLE new_table
WITH (
format = 'ORC',
external_location = 's3://...',
partitioned_by = ARRAY['year', 'month', 'day'])
AS select *
FROM old_table;
答案 1 :(得分:0)
使用s3 boto api编写python shell作业以重新组织文件夹结构,然后运行搜寻器