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/

相关文章:

asp.net - 无法加载 mysql.web 程序集

php - 什么是 API 映射?

php - PHP SQL 查询的案例与 MySQL 数据库的案例不同。不能使用 lower_case_table_names = 1

amazon-web-services - 如何在 s3 上分布式获取 key 列表

amazon-web-services - Cloudformation 在向导中隐藏参数

ruby - 无法使用 ruby​​ aws-sdk v2 在 S3 中创建存储桶

用于存储/访问大量数据的 PostgreSQL 和 S3QL

amazon-s3 - S3 对存储桶中对象的限制

php - $_POST 无法运行 PHP(没有错误)

amazon-web-services - CloudFormation - 安全组 VPC 问题