我目前正在努力了解如何创建我们的数据湖的数据目录(=Source)。
背景:
我们有一个事件驱动的架构,并开始将我们的应用程序产生的所有事件存储到数据湖(S3 Bucket)中。在存储事件之前,我们对其进行清理(删除敏感信息)并在每个事件周围添加一个包含一些通用数据的信封:
- 事件来源(哪个应用程序生成了事件)
- 事件类型(产生了什么样的事件)
- 时间戳(事件何时生成)
- ...
使用 Kinesis Streams 和 Firehose,我们将这些事件批处理在一起,并将它们作为 JSON 文件存储在 S3 存储桶中。存储桶的结构如下://///
在那里,我们将带有信封的批处理事件存储为 JSON 文件。这意味着一个 JSON 文件包含多个事件:
{
"origin": "hummingbird",
"type": "AuthenticationFailed",
"timestamp": "2019-06-30T18:24:13.868Z",
"correlation_id": "2ff0c077-542d-4307-a58b-d6afe34ba748",
"data": {
...
}
}
{
"origin": "hummingbird",
"type": "PostingCreated",
"timestamp": "2019-06-30T18:24:13.868Z",
"correlation_id": "xxxx",
"data": {
...
}
}
数据对象包含事件的特定数据。
现在我想我可以使用 AWS Glue 挂钩原始数据并使用 ETL 作业来聚合事件数据。据我了解,我需要为我的源数据建立一个数据目录,这就是我正在努力解决的问题,因为 JSON 总是包含不同的事件,这些事件是一起批处理的。标准的“爬虫”无法处理这个问题。它确实可以,但它会根据每个 JSON 文件创建无意义的模式。
我想要达到的目标:
- 解析数据湖以过滤出我感兴趣的事件
- 使用我感兴趣的事件并对其进行一些转换/聚合/计算
- 将结果存储到我们当前的 Analytics RDS 或任何地方(足以满足我们现在的目的)
- 每天解析新事件并将其插入/附加/更新到我们的分析 rds
我的问题:
- 在我们的数据湖中使用胶水的最佳方式是什么?
- 是否有可能将爬虫与自定义分类器和某种过滤器与我们的数据湖一起使用?
- 我是否需要在之前转换数据,才能真正使用 AWS 胶水?