我知道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表截图。
以下是Redshift表截图。
如您所见,数据类型并不完全相同。我想知道Redshift是否对级别如此敏感,以至于每个数据类型必须与MySQL表相同。
顺便说一句,我确实在Firehost COPY命令中指定了 JSON'auto'并启用了日志记录。不幸的是,没有记录错误。
答案 0 :(得分:0)
为什么你没有在Redshift中看到记录有很多原因。在Firehose将记录放入S3后,从Redshift执行COPY命令以从S3获取文件并进入群集。
如果您没有看到STL_LOAD_ERRORS,则Firehose无法连接到Redshift。您可以在Firehose控制台中验证这一点,您可以在Redshift Logs选项卡下找到更多信息。
此外,请确保您已在VPC for Redshift下的区域内允许来自Firehose IP范围的传入连接。