0

我知道这个问题在 Stack Overflow 中已经被问过好几次了,但是我读到的答案都不能解决我遇到的问题。

我有一个 Boto3 脚本来将 MySQL 表复制到 Kinesis Streams。然后在另一端,有一个 KCL Node JS 脚本,用于从 Kinesis Streams 读取流并写入 S3。到现在为止还挺好。

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

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

下面是 MySQL 表截图。

MySQL 表

下面是 Redshift 表格截图。

红移表

如您所见,数据类型并不完全相同。我想知道Redshift对级别是否如此敏感,以至于每个数据类型都必须与MySQL表相同。

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

4

1 回答 1

0

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

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

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

于 2017-06-02T23:09:50.780 回答