AWS Glue爬网程序,仅对路径中的最新时间戳进行爬网

时间:2019-04-12 16:51:08

标签: amazon-web-services yaml amazon-cloudformation aws-glue

我正在构建一个AWS Glue ETL,该ETL从一个S3路径提取,将一些数据透视到一个新的“表”中,然后将数据放回到另一个S3路径中。目标数据所在的结构是分区的,因此类似:

存储桶/路径/年/月/日/小时/时间戳

ETL每天运行一次或多次(不确定),由于组织上的限制,我无法移动和/或删除S3存储桶中的任何内容。每个ETL产生的数据都是历史源数据中每个实体的当前视图,这种情况会发生,并在每次运行ETL时写入新的“文件夹”。

由于我无法从目标S3路径中删除任何内容,因此最终用户必须查询生成的目录表并仅搜索最新的时间戳。我更希望爬网程序只爬网最近的时间戳,从而得到目录表中最新的当前实体数据的全貌,不包括任何历史记录。是否可以在路径中使用包含和排除模式?

还要注意:我正在使用CloudFormation创建搜寻器,ETL等。我在CF中选择的语言是YAML。

我考虑过的一件事是编写一个S3生命周期策略,以便在每次ETL运行时将较旧的数据存档到另一个区域。我还不确定的是ETL完成后,b可以触发生命周期策略吗?
生命周期策略可以删除除最近时间戳记之外的所有内容吗?我还没有真正充分地研究过此选项。

### Parameter Creation ###
  S3CurrentPathLake:
    Type: AWS::SSM::Parameter
    Properties:
      Description: "Path in the S3 Lake where the current data is stored."
      Type: String
      Value: 'Data/Entity/Current'
      Name: "/org/member/local/s3/path/CurrentLake"
### Stack Creation ###
  DestinationCrawlerStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: /home/ec2-user/crawler.yaml
      Parameters:
        S3DataBucket: !Sub "${S3DataBucket}"
        S3Path: !GetAtt S3CurrentPath.Value
        IAMRoleArn: !Sub "${GlueServiceArn}"
        DatabaseName: !Sub "${GlueDatabaseName}"
        CrawlerDescription: Crawls the destination data (i.e. current data)
        CrawlerName: current-crawler

最终结果是,爬网程序将仅对路径Data/Entity/Current/year/month/day/hour/timestamp/file.json中的最新时间戳进行爬网

我愿意接受其他建议来解决此问题。

0 个答案:

没有答案