我是AWS Glue的新手,并且很难完全理解AWS文档,但我正在努力解决以下用例:
我们有一个带有许多Avro文件的s3存储桶.我们决定使用Avro,因为它对数据模式的更改提供了广泛的支持,允许新字段毫无问题地应用于旧数据.
使用AWS Glue,我了解只要存在架构更改,爬虫就会创建一个新表.当我们的模式发生变化时,这会导致爬行器按照预期创建许多新表,但并不像我们希望的那样......
最终,我们希望爬虫检测到最新的模式,并将此模式应用于我们在s3存储桶中爬行的所有数据,仅输出一个表.我们(可能错误地)假设通过使用Avro,这不会是一个问题,因为爬虫可以将具有给定默认值或空值的新架构字段应用于旧数据(使用Avro的好处),并且只输出一个表然后我们可以使用AWS Athena进行查询.
AWS Glue中是否有一种方法可以为s3存储桶中的所有数据使用给定的模式,使我们能够利用模式演化的Avro优势,从而将所有数据输出到一个表中?
所以我不确定为什么我有这么困难的时间,但是我有一个id数组,我试图用它来映射一个对象数组以找到相应的id,但从不同的键返回值.
即:
arr=[13, 1, 16]
arrObj= [{
id: 1,
name: "cat"
}, {
id: 10,
name: "tiger",
}, {
id: 3,
name: "dog",
}, {
id: 16,
name: "bear",
}, {
id: 8,
name: "fish",
}, {
id: 13,
name: "goat",
}]
Run Code Online (Sandbox Code Playgroud)
我希望它返回:
["goat", "cat", "bear"]
我有一个嵌套的map函数,它执行此操作但返回未定义的对象没有相应的ID.我可以从返回的数组中过滤掉未定义的内容,但似乎有更清晰/更有效的方法来执行此操作.
实现这一目标的最简洁方法是什么?