使用 AWS Glue 爬虫进行智能采样
Posted
技术标签:
【中文标题】使用 AWS Glue 爬虫进行智能采样【英文标题】:Smart sampling with AWS Glue Crawlers 【发布时间】:2019-10-21 13:57:57 【问题描述】:我的 s3 存储桶上有几张桌子。这些表在内存大小和文件数量上都很大,它们存储在 JSON 中(我知道不是最理想的)并且有很多分区。
现在我想启用 AWS Glue 数据目录和 AWS Glue Crawlers,但是我对遍历所有数据的爬虫程序的价格感到害怕。
架构不会经常更改,因此无需遍历 S3 上的所有文件。
默认情况下,爬虫会遍历所有文件吗?是否可以配置一个更智能的采样策略,只查看部分文件而不是所有文件?
【问题讨论】:
您是使用 Glue Crawler 进行“模式更改检测”还是仅用于新添加数据集的“新分区检测”?如果是在第一次使用爬虫进行“模式检测”后对新添加的数据集进行“新分区检测”,您可以使用 Athena Boto3 API 添加分区,而无需运行爬虫。 这是一个不错的技巧,我以前用过。但是架构更改经常发生。 那么这会很棘手,因为您需要注意在爬虫期间考虑所有模式更改,否则爬虫将无法检测到所有模式更改,从而使 Glue 数据目录变得混乱。如果您希望进行选择性爬网,如@Eman 所述,您可以使用排除路径(不幸的是,Glue 不提供包含路径:()但是这样做时,您必须包含所有可能具有架构更改的路径..e.g.架构更改发生在 2019 年 10 月 10,15,20 日,那么它必须包含在爬虫路径中,并且爬虫每次都必须爬过这些数据集。继续...1/2 老实说,它使爬虫的目的无效,因为您必须明确知道架构更改。 ... 2/2 理想情况下,我会想象爬虫会遍历 5% 的随机选择的文件。这将以相对较高的概率覆盖所有更改,同时显着降低扫描成本。 【参考方案1】:根据您的存储桶结构,也许您可以使用排除路径并将爬虫指向您想要爬取的特定前缀。如果分区是 hive 风格的分区,那么你可以利用 Athena 执行 msck repair table 来添加分区。或者,您可以在 Athena 中手动创建表并运行 msck repair,如果您有很多分区并且文件很大,那么这肯定会花费很长时间。
【讨论】:
以上是关于使用 AWS Glue 爬虫进行智能采样的主要内容,如果未能解决你的问题,请参考以下文章