我认为应该是AWS Glue的一个相对简单的用例,但是我在确定如何实现它方面遇到很多麻烦。
我有一个Kinesis Firehose作业,将流数据转储到S3存储桶中。这些文件由一系列离散的Web浏览事件组成,这些事件表示为具有不同结构的JSON文档(因此,一个文档可能具有字段“ date”而不是字段“ name”,而另一个文档可能具有“ name”但没有“ date” )。
我希望在这些文件上每小时执行一次ETL作业,其细节与手头的事情无关。
我正在尝试运行S3数据目录搜寻器,遇到的问题是Kinesis输出格式本身不是有效的JSON,这让我感到困惑。相反,它是一堆由换行符分隔的JSON文档。搜寻器可以自动识别和解析JSON文件,但是无法解析。
我曾想过编写一个lambda函数来“修复” Firehose文件,该文件由在存储桶中创建触发,但是对于两个应该整齐地组合在一起的文件来说,这听起来像是一种廉价的解决方法。
另一种选择是完全绕开数据目录并在Glue脚本本身中进行必要的转换,但是我不知道如何开始。
我有什么想念的吗?有没有更简单的方法来解析Firehouse输出文件,或者失败了,无需使用搜寻器?
预先欢呼和感谢
我设法解决了这个问题;基本上,问题在于并非每个JSON文档都具有相同的基础结构。
作为Kinesis流程的一部分,我编写了一个lambda脚本,该脚本通过在必要时添加NULL字段来将每个文档强制为相同的结构。然后,搜寻器能够正确地解析生成的文件并将它们映射到单个表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句