Gre*_*0ry 5 amazon-web-services amazon-redshift amazon-kinesis-firehose
我创建了一个 Kinesis 数据流,并将格式如下的记录输入其中:
{
"ufo": 5,
"unicorn": 7,
"something else": 9,
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个转换 lambda,它将转换上述记录并将三个记录插入到 Redshift 中。Redshift表架构是这样的:
CREATE TABLE my_table(
timestamp DATETIME,
name TEXT,
count INT
) SORTKEY(timestamp);
Run Code Online (Sandbox Code Playgroud)
因此本质上,我需要从单个 Kinesis 记录在 Redshift 中生成三行。
转换 lambda 的文档没有解释我想要实现的目标是否可能。我已经尝试在编码之前将所有有效负载包装在数组中,但这会导致 Redshift 端出现处理错误。我还尝试返回具有相同记录 ID 的多个记录 - 这也会导致错误。
我发现了一些文档,其中显示多个 JSON 对象可以存储在由 COPY 命令提供的单个 JSON 文件中。根据文档,文件中可以有多个 JSON 对象,并且 JSON 对象之间只能放置白色字符。
所以我扔掉了这样的物体:
{"timestamp": "2020/07/17 00:00:00", "name": "ufo", "count": 5}
{"timestamp": "2020/07/17 00:00:00", "name": "unicorn", "count": 7}
{"timestamp": "2020/07/17 00:00:00", "name": "something else", "count": 9}
Run Code Online (Sandbox Code Playgroud)
由于 AWS 正在重试失败的记录,因此调试这一点非常令人困惑 - 我在对象之间添加了新行(这是文档中建议的内容),起初我以为我收到了错误,但错误是针对之前重试的尝试。
| 归档时间: |
|
| 查看次数: |
2021 次 |
| 最近记录: |