AWS Kinesis Firehose未在Redshift中插入数据

时间:2017-05-23 01:54:18

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

我知道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 table

以下是Redshift表截图。

Redshift table

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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