微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Glue 在 S3 中抓取 JSON 行数据

如何解决AWS Glue 在 S3 中抓取 JSON 行数据

我的 S3 中有这种类型的数据:

{"version":"0","id":"c1d9e9a4-25a2-a0d8-2fa4-b062efec98c4","detail-type":"OneTypeee","source":"Onesource","account":"123456789","time":"2021-01-17T12:35:17Z","region":"eu-central-1","resources":[],"detail":{"Key1":"Value1"}}
{"version":"0","id":"c13879a4-2h32-a0d8-9m33-b03jsh3cxxj4","detail-type":"OtherType","source":"SomeMagicSource","time":"2021-01-17T12:36:17Z","detail":{"Key2":"Value2","Key22":"Value22"}}
{"version":"0","id":"gi442233-3y44a0d8-9m33-937rjd74jdddj","detail-type":"MoreTypes","source":"SomeMagicSource2","time":"2021-01-17T12:45:17Z","detail":{"MagicKey":"MagicValue","Foo":"Bar"}}

请注意,我添加了新行以使其更具可读性。实际上,Kinesis Firehose 生成这些批次时没有换行。

当我尝试对这种类型的数据运行 AWS glue 爬网程序时,它只会爬取第一个 JSON 行,仅此而已。我知道这一点是因为当我运行 Athena sql 查询时,我总是只得到一个(第一个)结果。

如何让胶水爬虫正确地抓取这些数据并创建正确的模式,以便我可以查询所有这些数据?

解决方法

我无法通过 JSON 行数据运行爬虫,但只需在 Glue Table Serde 属性中指定数据为 JSON 即可。 Glue 通过换行符自动拆分 JSON,我可以在我的 Glue 作业中查询数据。

这是我的表的属性的样子。此外,我的 json 行数据已被压缩,因此您可以忽略 compressionType 属性。 glue table configuration

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。