AWS Glue-如何从S3抓取Kinesis Firehose输出文件夹

pedrogfp

我认为应该是AWS Glue的一个相对简单的用例,但是我在确定如何实现它方面遇到很多麻烦。

我有一个Kinesis Firehose作业,将流数据转储到S3存储桶中。这些文件由一系列离散的Web浏览事件组成,这些事件表示为具有不同结构的JSON文档(因此,一个文档可能具有字段“ date”而不是字段“ name”,而另一个文档可能具有“ name”但没有“ date” )。

我希望在这些文件上每小时执行一次ETL作业,其细节与手头的事情无关。

我正在尝试运行S3数据目录搜寻器,遇到的问题是Kinesis输出格式本身不是有效的JSON,这让我感到困惑。相反,它是一堆由换行符分隔的JSON文档。搜寻器可以自动识别和解析JSON文件,但是无法解析。

我曾想过编写一个lambda函数来“修复” Firehose文件,该文件由在存储桶中创建触发,但是对于两个应该整齐地组合在一起的文件来说,这听起来像是一种廉价的解决方法

另一种选择是完全绕开数据目录并在Glue脚本本身中进行必要的转换,但是我不知道如何开始。

我有什么想念的吗?有没有更简单的方法来解析Firehouse输出文件,或者失败了,无需使用搜寻器?

预先欢呼和感谢

pedrogfp

我设法解决了这个问题;基本上,问题在于并非每个JSON文档都具有相同的基础结构。

作为Kinesis流程的一部分,我编写了一个lambda脚本,该脚本通过在必要时添加NULL字段来将每个文档强制为相同的结构。然后,搜寻器能够正确地解析生成的文件并将它们映射到单个表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章