AWS Glue爬虫能否为S3中ID为键的JSON生成指定Schema?直接读取是否合规?
问题
我在S3上有一个JSON数据文件,结构如下(每个对象的ID被用作键):
{"id_01": {"name": "Julie", "city": "Paris"},"id_02": {"name": "Marc", "city": "Lyon"},...}
请问AWS Glue爬虫能否生成如下格式的Schema?:
id|name|city
如果不能,直接从S3读取该文件而不先进行爬取是否属于最佳实践?
回答
- 默认情况下,Glue爬虫没法生成你要的这种Schema。它会把顶层的
id_01、id_02这类键识别成单独的字段,生成的Schema会是id_01: struct(name:string, city:string), id_02: struct(name:string, city:string)...这种嵌套结构,和你要的扁平化id|name|city完全不符。 - 要拿到目标Schema,得先把原始JSON转成标准数组格式,比如:
之后再用Glue爬虫爬取,才能生成你需要的Schema。[{"id":"id_01", "name":"Julie", "city":"Paris"}, {"id":"id_02", "name":"Marc", "city":"Lyon"}, ...] - 关于直接读S3的最佳实践:如果你的数据格式固定、后续不会频繁变动,直接读S3处理完全可行——比如写Glue ETL脚本手动解析原始JSON,把顶层键提取作为
id字段,再和对应的name、city组合成目标结构。但如果数据结构可能变化,或者需要自动维护元数据、关联其他数据目录资源,还是建议先把数据转成标准格式再用爬虫,这样能利用Glue数据目录的元数据管理能力,后续的查询、ETL操作会更便捷。
内容的提问来源于stack exchange,提问作者LucG
相关产品推荐
相关产品推荐

