AWS Kinesis Firehose 未在 Redshift 中插入数据

AWS Kinesis Firehose is not inserting data in Redshift

我知道这个问题已在 Stack Overflow 中被问过多次,但我阅读的 none 答案能够解决我遇到的问题。

我有一个 Boto3 脚本,用于将 MySQL table 复制到 Kinesis Streams。然后在另一端,有一个 KCL Node JS 脚本,用于从 Kinesis Streams 读取流并写入 S3。到目前为止一切顺利。

我在同一区域设置了 Kinesis Firehose、Redshift 和 S3。然后,我将 Firehose 设置为从 S3 读取并写入 Redshift。使用 Firehose 提供的演示数据进行测试时,一切正常。

然后我设置了一个 Redshift table,其中包含 MySQL table 中的所有列。 Redshift 不支持某些数据类型,因此我使用了不同的数据类型,但我相信 Firehose 能够毫无问题地写入 Redshift table。

下面是MySQLtable截图。

下面是 Redshift table 屏幕截图。

如您所见,数据类型并不完全相同。不知Redshift是不是敏感到了每个数据类型都必须和MySQLtable一样的程度。

顺便说一下,我确实在 Firehost COPY 命令中指定了 JSON 'auto' 并启用了日志记录。不幸的是没有错误记录。

您在 Redshift 中看不到记录的原因有很多。 Firehose 将记录放入 S3 后,从 Redshift 执行 COPY 命令以从 S3 获取文件并放入集群。

如果您没有看到 STL_LOAD_ERRORS,则 Firehose 无法连接到 Redshift。您可以在 Firehose 控制台中验证这一点,您将在 Redshift 日志选项卡下找到更多信息。

此外,请确保您已允许来自 Redshift VPC 下区域中 Firehose IP 范围的传入连接。