AWS Glue爬取自定义命名S3分区时如何配置生成单张表
AWS Glue 爬网程序合并多文件夹同结构JSON为单表配置方案
你遇到的问题是Glue爬网程序默认的表创建规则导致的:默认情况下,若S3子文件夹不符合Hive样式分区命名(分区键=分区值格式),且每个子文件夹下仅存在1个数据文件时,爬网程序会默认将每个子文件夹判定为独立数据源,单独建表。你修改文件夹为纯数字命名时触发了默认的单分区序号识别逻辑,所以可以生成带分区的单表。
按以下步骤配置即可实现预期效果:
1. 开启单路径单Schema配置
创建/编辑爬网程序时,在「输出配置」板块找到为每个S3路径创建单个Schema选项,勾选启用。该选项会强制爬网程序将你指定的根路径下所有结构兼容的文件识别为同一张表的数据源,不会根据子文件夹结构拆分建表。
2. 启用文件分组配置(可选,上述配置不生效时补充)
如果开启单Schema配置后依然拆分多表,可以在爬网程序的「高级配置」-「爬网程序参数」中添加配置:--grouping = true
该参数会强制爬网程序合并根路径下所有结构一致的文件为同一张表,忽略子文件夹的独立数据源判定。
3. 自定义分区配置(可选,需要保留文件夹日期信息时使用)
如果你需要把文件夹名称中的日期作为分区字段使用,可以在爬取生成单表后,手动执行SQL添加分区,示例如下:
ALTER TABLE 你的表名 ADD PARTITION (dt='20210801', uuid='123123cfec') LOCATION 's3://bucket_name/20210801123123cfec/';
也可以提前在爬网程序中配置自定义分区提取规则,爬取时自动识别文件夹中的日期作为分区值。
内容的提问来源于stack exchange,提问作者pba
相关产品推荐
相关产品推荐

