我知道这个问题在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'并启用了日志记录。不幸的是,没有记录错误。
最佳答案
为什么您在Redshift中看不到记录有很多原因。在Firehose将记录放入S3之后,将从Redshift执行COPY命令以将文件从S3获取并进入群集。
如果未看到STL_LOAD_ERRORS,则Firehose无法连接到Redshift。您可以在Firehose控制台中对此进行验证,您将在Redshift Logs标签下找到更多信息。
另外,请确保您已允许在Redshift的VPC下的区域中通过Firehose的IP范围的传入连接。
关于mysql - AWS Kinesis Firehose不在Redshift中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124575/