【问题标题】:Aws Glue - S3 - Native PythonAws Glue - S3 - 本机 Python
【发布时间】:2018-06-29 10:18:02
【问题描述】:

在 AWS Glue 中,我如何处理 S3 中每周都会更改的文件。

示例: 第 1 周:“文件名 01072018.csv” 第 2 周:“filename01142018.csv”

这些文件以相同的格式设置,但我需要 Glue 能够每周更改以将这些数据从 S3 加载到 Redshift。 Glue 的代码使用原生 Python 作为后端。

【问题讨论】:

  • 我没有关注。文件名之间有什么变化?你是说格式相同,文件在同一个文件夹中,但你需要胶水只添加新文件中的数据?
  • 是的。只是日期在最后发生了变化。
  • 您查看过书签吗?这应该是你所需要的?
  • @JonScott 这看起来正是我所需要的。如果在一个存储桶中有两个不同的文件名呢?有没有办法使用字符串匹配或类似的东西来选择一个文件名与另一个文件名?

标签: python python-3.x amazon-redshift aws-glue


【解决方案1】:

AWS Glue 爬虫应该能够只找到命名的 CSV 文件,而无需您进行任何配置。

例如,我的 Kinesis 流生成的文件的路径和名称如下所示:

my_events_folder/2018/02/13/20/my-prefix-3-2018-02-13-20-18-28-112ab3f0-5794-4f77-9a84-83efafeecabc
my_events_folder/2018/02/13/20/my-prefix-2-2018-02-13-20-12-00-7f2efb62-827b-46a6-83c4-b4c52dd87d60
...

AWS Glue 只是找到这些文件并自动对其进行分类。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    AWS Glue 应该能够处理文件夹中的所有文件,而不管单个作业中的名称。如果您不想再次处理旧文件,请在每次运行后使用 boto3 api for s3 将其移动到另一个位置。

    【讨论】:

      【解决方案3】:

      如果您有两种不同类型的文件(具有不同的内部格式),它们必须位于不同的文件夹层次结构中。没有办法告诉爬虫只寻找redfile*.csv 而忽略bluefile%.csv。取而代之的是用户单独的层次结构,例如:

      s3://my-bucket/redfiles/
                             redfile01072018.csv
                             redfile01142018.csv
                             ...
      s3://my-bucket/bluefiles/
                             bluefile01072018.csv
                             bluefile01142018.csv
                             ...
      

      设置两个爬虫,一个爬s3://my-bucket/redfiles/,一个爬s3://my-bucket/bluefiles/

      【讨论】:

        猜你喜欢
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-09
        • 2022-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多