【问题标题】:Firehose data transformation lambda - produce multiple records from single kinesis recordFirehose 数据转换 lambda - 从单个 kinesis 记录生成多个记录
【发布时间】:2020-11-06 03:25:02
【问题描述】:

我创建了一个 Kinesis 数据流,我正在向其中输入格式如下的记录:

{
    "ufo": 5,
    "unicorn": 7,
    "something else": 9,
}

我正在尝试编写一个转换 lambda,它将转换上面的记录并将三个记录插入 Redshift。 Redshift 表架构是这样的:

CREATE TABLE my_table(
    timestamp DATETIME,
    name TEXT,
    count INT
) SORTKEY(timestamp);

所以本质上 - 从单个 Kinesis 记录中,我需要在 Redshift 中生成三行。

Documentation of transformation lambda 没有解释我想要实现的目标是否可行。我已经尝试在编码之前将所有有效负载包装在数组中,但这会导致 Redshift 端出现处理错误。我还尝试返回具有相同记录 ID 的多条记录 - 这也会导致错误。

【问题讨论】:

    标签: amazon-web-services amazon-redshift amazon-kinesis-firehose


    【解决方案1】:

    我遇到了this bit of documentation,它表明多个 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}
    

    由于 AWS 正在重试失败的记录,因此调试它非常令人困惑 - 我在对象之间添加了新行(这是文档中建议的内容),起初我以为我遇到了错误,但错误是因为重试了之前的尝试。

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2020-02-08
      • 2017-10-16
      • 2021-10-31
      • 2021-06-15
      • 2018-10-24
      • 2021-09-27
      • 2020-09-15
      • 2017-10-16
      相关资源
      最近更新 更多