3

我有一个名为 Employee 的 S3 存储桶。每三个小时我就会在存储桶中获取一个带有时间戳的文件。我将使用 Glue 作业将文件从 S3 移动到 Redshift,并进行一些转换。我在 S3 存储桶中的输入文件将具有固定的结构。My Glue Job 将使用通过爬虫在 Data Catalog 中创建的表作为输入。

首轮:

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "test", table_name = "employee_623215", transformation_ctx = "datasource0")

三个小时后,如果我再为员工获取一份文件,我应该再次抓取它吗?

有没有办法在数据目录中拥有一个表,比如员工,并使用最新的 S3 文件更新表,Glue Job 可以使用该文件进行处理。还是我应该每次都运行爬虫来获取最新数据?问题是我的数据目录中将创建更多的表。

请让我知道这是否可能。

4

2 回答 2

4

如果架构发生更改,您只需再次运行 AWS Glue Crawler。只要架构保持不变,您就可以将文件添加到 Amazon S3,而无需重新运行 Crawler。

更新:@Eman 下面的评论是正确的

如果您从目录中阅读此建议将不起作用。如果您不重新爬网,分区将不会更新到目录表。运行爬虫将这些新分区映射到表,并允许您处理第二天的分区。

于 2020-06-23T19:10:37.477 回答
1

另一种方法可以是,而不是直接从 s3 读取目录并在 Glue 作业中处理数据。

这样你就不需要再次运行爬虫了。

采用

from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx="")

记录在这里

于 2020-06-24T03:27:43.643 回答