mysql - AWS Kinesis Firehose 未在 Redshift 中插入数据

标签 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' 并启用了日志记录。不幸的是,没有记录错误。

最佳答案

导致您在 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/

相关文章:

php - 迭代项目和子项目 - 知道何时停止

amazon-web-services - 如何在 AWS 中的特定时间触发 Lambda 函数?

amazon-web-services - 在单个指定的 future 时间仅调用 AWS Lambda 函数一次

amazon-web-services - ECS 任务所需的计数不起作用

amazon-web-services - Cloudfront 流量比 S3 便宜?

php - 如何使数据库时间戳与用户时区相关

php - 如何在php中使用Bcrypt通过注册和登录过程对密码进行加密

php - 在 PHP 中设置 session cookie 时遇到问题

amazon-web-services - AWS S3 存储桶中对象的数量或大小是否会对性能产生影响

javascript - nodejs 中的两个 HTTP 请求问题